2017-02-01 2 views

Antwort

0
declare -a dirs 
i=1 
for d in */ 
do 
    dirs[i++]="${d%/}" 
done 
echo "There are ${#dirs[@]} dirs in the current path" 

for((i=1;i<=${#dirs[@]};i++)) 
do 
    echo "Copying file.txt from ${dirs[i]} dir..." 
    cp ./${dirs[i]}/file.txt ./file_$i.txt 
done 

speichern es als eine Skriptdatei, fileTxtCopy.sh, zum Beispiel. Platzieren Sie es dann im übergeordneten Verzeichnis und geben Sie ihm die ausführbare Berechtigung sudo chmod +x fileTxtCopy.sh.

Führen Sie es als Skript und Sie sollten alle Ihre file.txt Datei im übergeordneten Verzeichnis kopiert haben.

0

Perl One Liner

zuerst als auf Hauptordner gehen:

find . | perl -a -F/ -lne 'qx(cp -r "$F[1]" T/)'

note
nicht über Protokolldatei auf dem Bildschirm sorgen, wenn sein würde!
T/
ist Ihr Zielverzeichnis
Hauptordner
Wo alle Dateien vorhanden sind. Wenn Ihre gesamte Datei im Ordner Musik zum Beispiel ist; so cd Music dann, dass Perl One Liner

0

Kopien file.txt Dateien aus jedem Ordner in einem aktuellen Verzeichnis in das aktuelle Verzeichnis und fügt Nummern in einem Ordnernamen auf den Namen der kopierten Datei enthalten ist.

for i in *; do a=$(<<< "$i" grep -o "[0-9]*" -); cp "$i/file.txt" "file_$a.txt"; done 

Nicht die robusteste Vorgehensweise.

Verwandte Themen