2017-01-23 2 views
2

Ich habe Tausende von Dateien mit dem Namen "DOCUMENT.PDF" und ich möchte sie basierend auf einem numerischen Bezeichner im Pfad umbenennen. Leider habe ich anscheinend keinen Zugriff auf den Umbenennungsbefehl.Benennen Sie Dateien basierend auf Muster im Pfad um

Drei Beispiele:

/000/000/002/605/950/ÐÐ-02605950-00001/DOCUMENT.PDF 
/000/000/002/591/945/ÐÐ-02591945-00002/DOCUMENT.PDF 
/000/000/002/573/780/ÐÐ-02573780-00002/DOCUMENT.PDF 

als umbenannt werden, ohne ihr übergeordnetes Verzeichnis zu ändern:

2605950.pdf 
2591945.pdf 
2573780.pdf 
+0

* Ich scheine keinen Zugriff auf den Umbenennungs Befehl * zu haben, Sie meinen, Sie haben nicht die Fähigkeit, die 'mv auszuführen 'Befehl? Wenn sich die Originaldateien in '/ 000/000/002/...' befinden, auf welchem ​​Ordner basiert das? Das aktuelle Verzeichnis oder die Wurzel? Wohin sollen die resultierenden Dateien gehen? – lurker

+0

Ja, ich kann mv oder cp ausführen. Die Originaldateien stammen aus dem aktuellen Verzeichnis (nicht root). Die resultierenden Dateien können in das aktuelle Verzeichnis wechseln. Danke für Ihre Hilfe! – Cinda

+0

'mv' ist, wie Sie eine Datei in Unix" umbenennen ". Du machst es mir unter einem anderen Namen. – lurker

Antwort

0

eine Verwendung für Schleife und dann verwenden, um den mv Befehl

for file in * 
do 
    num=$(awk -F "/" '{print $(NF-1)}' file.txt | cut -d "-" -f2); 
    mv "$file" "$num.pdf" 
done 
0

Sie können dies mit globstar in Bash 4.0 + tun:

cd _your_base_dir_ 
shopt -s globstar    
for file in **/DOCUMENT.PDF; do # loop picks only DOCUMENT.PDF files 
    # here, we assume that the serial number is extracted from the 7th component in the directory path - change it according to your need 
    # and we don't strip out the leading zero in the serial number 
    new_name=$(dirname "$file")/$(cut -f7 -d/ <<< "$file" | cut -f2 -d-).pdf 

    echo "Renaming $file to $new_name" 

    # mv "$file" "$new_name" # uncomment after verifying 
done 

dieses Ergebniss sehen, die über ein ähnliches Problem spricht: How to recursively traverse a directory tree and find only files?

Verwandte Themen