2009-03-13 6 views

Antwort

4

Sie können ein schnellen Shell-Skript schreiben, dies für Sie tun. Um den Namen des aktuellen Ordners zu erhalten:

pwd|awk -F'/' '{print $NF}' 

und den aktuellen Ordner der Eltern zu erhalten:

pwd|awk -F'/' '{SL = NF-1; print $SL}' 

aktualisieren

Erstellen Sie eine Datei, die wie folgt aussieht:

#!/bin/bash 

for f in `find . -name '*jpg'` 
do 
    filename=`echo $f|awk -F'/' '{SL = NF-1; TL = NF-2; print $TL "_" $SL "_" $NF}'` 
    cp $f newfolder/$filename 
done 

und dann tun Sie chmod +x darauf. Führen Sie das Skript auf der obersten Ebene aus. In diesem Fall müssen Sie das Ziel, den neuen Ordner, im Voraus festlegen.

Ich nahm diese Verzeichnisstruktur:

./bar 
./bar/baz 
./bar/baz/1.jpg 
./bar/baz/2.jpg 
./bar/baz/3.jpg 
./bar/buz 
./bar/buz/1.jpg 
./bar/buz/2.jpg 
./bar/buz/3.jpg 
./foo 
./foo/baz 
./foo/baz/1.jpg 
./foo/baz/2.jpg 
./foo/baz/3.jpg 
./foo/buz 
./foo/buz/1.jpg 
./foo/buz/2.jpg 
./foo/buz/3.jpg 

und in das machte:

./newfolder/bar_baz_1.jpg 
./newfolder/bar_baz_2.jpg 
./newfolder/bar_baz_3.jpg 
./newfolder/bar_buz_1.jpg 
./newfolder/bar_buz_2.jpg 
./newfolder/bar_buz_3.jpg 
./newfolder/foo_baz_1.jpg 
./newfolder/foo_baz_2.jpg 
./newfolder/foo_baz_3.jpg 
./newfolder/foo_buz_1.jpg 
./newfolder/foo_buz_2.jpg 
./newfolder/foo_buz_3.jpg 

Hoffnung, dass ist das, was Sie suchen.

+0

Vielen Dank für die schnelle Hilfe. Würdest du ein bisschen mehr ausarbeiten? Soll ich dafür eine Batch-Datei erstellen? oder wie man es ausführt? –

+0

Ich habe die Antwort aktualisiert, um ein Shell-Skript einzuschließen. – jedberg