Sposta più file dall'elenco dei nomi in una nuova cartella


1

Ho un elenco di nomi di file in list.txt, che hanno 'abc1.png, abc2.png, abc3.png ....'.

Tuttavia, non conosco le directory in cui si trovano i file.

Voglio trovare tutti i file nel file txt e spostarli in una nuova cartella.


1
Sarebbe piuttosto difficile da eseguire in un comando shell poiché AFAIK non è possibile reindirizzare o individuare cat cat, quindi consiglierei di utilizzare find / -name a.pngper individuare la directory, quindi eseguire cd DIRECTORY; mv $(cat list.txt) ~/o si potrebbe scrivere uno script shell più complicato per scorrere la linea per linea, ma ciò potrebbe costare più tempo di quanto risparmi.

Risposte:


0

Devi leggere ogni nome di file riga per riga , quindi provare ad findusarlo con l' nameopzione e infine mva raggiungere il target:

while IFS= read -r filename; do
    find /somewhere -type f -name "$filename" -exec mv -- {} /somewhere/else/ \;
done < file.txt

Il {}sarà sostituito con il percorso del file trovato.


0

Supponendo che i nomi dei file non contengano "," o newline e che ogni file esista in list.txt solo una volta. Ovviamente devi anche cambiare nuova directory nella directory che desideri. Se manca un file in list.txt, il file non viene copiato (e non vengono fornite informazioni).

sed -s "s/, /\\n/g" list.txt | xargs -IFILE -n1 find -name FILE -exec mv {} newdirectory \;

-1

Questo è facile con alcuni bash:

trova prima i tuoi file con find e reindirizza il risultato in un altro file:

per arg in $ (cat list.txt); trova / -name $ arg -print >> files_with_path.txt; fatto

quindi mv i file:

per arg in $ (cat files_with_path.txt); fare mv $ arg / your / dest / cartella; fatto


1
Per favore leggi: Perché non leggi le righe con "for" - il tuo comando fallirà in determinate situazioni, in particolare quando i file (o i percorsi trovati) contengono spazi bianchi.
slhck,

Cerca ogni singolo file attraverso l'intero filesystem ??
pbies,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.