Rinominare file / nomi alla rinfusa, una soluzione più intelligente?

7

Ho qualche migliaio di file da rinominare.

Il fatto è che ho old file names e new file names come colonne in un foglio di calcolo . Senza rinominarli uno per uno. C'è un modo migliore per farlo?

Apprezzo qualsiasi aiuto. Ho provato quanto segue con poche soddisfazioni:

  • File Renamer - Questo mi permette di rinominare i file specificati da un elenco esterno in .txt. Tuttavia la versione di prova limita a 500 articoli. Non desidero pagare $ 20 solo per questo lavoro manuale.

    Avrebbero potuto installarli su computer separati o su macchine virtuali.

  • Automator: ottieni elementi specificati > Rinomina >

    Non così efficacemente come pensavo.

Sto solo cercando una soluzione più intelligente. Apprezzo qualsiasi aiuto

    
posta Pete 26.04.2016 - 15:03
fonte

3 risposte

10
  • esporta in un CSV: due colonne, separate da ; (supponendo che non ci sia ; in un nome file)
  • apri Terminale
  • passa alla cartella contenente i file
  • esegui perl -pi -e 's/\r\n/\n/;' LISTOFNAMES.csv per risolvere i problemi CRLF
  • Esegui while IFS=\; read old new; do mv "$old" "$new"; done < LISTOFNAMES.csv

PS: sovrascriverà i file esistenti se il nuovo nome esiste già.

PPS: prova questo in una cartella temporanea con solo pochi file (e assicurati di avere un backup recente)

    
risposta data 26.04.2016 - 15:13
fonte
5

Ho trovato questo uno dei modi più semplici:

  • In una colonna del foglio di calcolo, concatenare: "cp nomefile_nomeopenominazione" per creare una copia con il nuovo nome.
    • Utilizza "mv oldfilename newfilename" per sostituire i vecchi file anziché copiare.
  • Copia questa colonna concatenata in un file di testo e salva come rename.sh nella cartella con i file da rinominare.
  • Apri terminale, vai alla cartella con i file da essere rinominato ed eseguire bash rename.sh
risposta data 26.04.2016 - 19:35
fonte
2

Un paio di anni fa ho scritto un post sul blog per l'esecuzione di operazioni sui file in blocco . Il primo passo è stato copiare l'elenco di file dai risultati di ricerca in un foglio di calcolo. Dato che hai già il foglio di calcolo, sei molto vicino ad avere uno script che può rinominare per te.

Supponiamo che tu abbia vecchi nomi nella colonna A e nuovi nomi nella colonna B.

Scrivi quanto segue nella prima cella della colonna C:

mv

Scrivi quanto segue nella prima cella della colonna D:

=concatenate("""",A1,"""")

Scrivi quanto segue nella prima cella della colonna E:

=concatenate("""",B1,"""")

Chiedi all'applicazione Foglio di calcolo su "Riempi > Giù "colonna C, D ed E.

Quindi copia tutte le righe di dati dalle colonne C, D ed E. Incolla il testo copiato in un editor di testo. Dovresti leggere la riga:

mv "old file name" "new file name"

Questo comando sposta / rinomina il file denominato "vecchio nome file" in "nuovo nome file". Warping dei nomi dei file tra virgolette consente nomi di file contenenti spazi.

Se sei soddisfatto dei comandi, copia e incolla il testo completo nella shell in Terminal.app

La procedura è ammettatamente meno elegante che avere uno script processa il tuo foglio di calcolo o CSV. Ha comunque il vantaggio di avere la possibilità di ricontrollare i comandi prima di eseguirli. Quando lavori dai risultati di ricerca, puoi facilmente ottenere valori da altre colonne (ad es. Data di modifica, dimensioni dell'immagine, ecc.) E inserirli nei nuovi nomi di file.

    
risposta data 26.04.2016 - 20:41
fonte

Leggi altre domande sui tag