2016-06-07 8 views
-1

In BashKopieren eine Datei in alle Unterverzeichnis mit chmod in bash

Ich versuche, einen Weg zu finden, um eine Datei in jedem Unterverzeichnis mit der guten chmod zu kopieren:

Beispiel:

toto.txt ist in/home/a

aber in ein, finden wir 3 dir

"b, c, d"

Ich möchte toto.txt in b kopieren, c, d, ohne toto.txt von einem zu löschen.

+1

'für dir in b c d; do cp /home/a/toto.txt "$ dir"; done' – fedorqui

+1

Sie erwähnen 'chmod' zweimal, haben Sie es mit einem Werkzeug zum Kopieren von Dateien verwechselt, oder erwarten Sie, die Berechtigungen für die Dateien zu ändern? – Aaron

+0

Nun, danke für deine Antworten! Wie Aaron sagte, ich erwähne chmod, wird es möglich sein, die Berechtigungen von "toto.txt" abhängig von den Berechtigungen des Verzeichnisses zu ändern? Beispiel: toto.txt in b wird 777 haben toto.txt in c wird 755 haben, weil c 755 chmod hat? –

Antwort

0

Dies wird die toto.txt in alle Unterverzeichnisse unter /home/a

cd /home/a && for i in * 
do 
[ -d $i -a "$i" != ".." -a "$i" != "." ] && cp toto.txt "/home/a/$i/" 
perm=$(stat -c "%a %n" xadmin/ | awk '{ print $1 }') 
chmod $perm "/home/a/$i/toto.txt"        
done 

gefunden kopieren Wenn nur die Datei kopieren, wenn das Ziel ein Verzeichnis -d und die Datei dir ist nicht . oder .., die ist das aktuelle und das Eltern-Dir.

+0

Vielen Dank! Ich war mir bewusst, dass '$ (...)' Syntax hatte einige Probleme mit z. Dateinamen mit '*'. Dein Link macht es klar, also habe ich meinen Code entsprechend geändert und werde für meine zukünftigen Skripte verwenden. Das ist es, was ich an SO mag !!!! :) – cb0

+0

Ich habe einen anderen gelesen für Sie: http://mywiki.wooledge.org/Quotes#Prevent_field_splitting_and_ignore_glob_pattern_characters :-) – andlrc

+0

Ich habe nur einige dieser Seiten für Abendstudium vorgemerkt. Z.B. "Bash Pitfalls" sieht sehr informativ aus. Ich dachte immer, dass meine Bash-Fähigkeiten gut sind, aber ich sehe, dass sie manchmal nur ungenau sind. Danke noch einmal! – cb0