Řešení 1:
Aby se zabránilo zbytečnému použití cat
(a pokud nepoužíváte rsync
):
xargs -a file_list.txt mv -t /path/to/dest
To zpracuje jakýkoli platný název souboru, pokud neobsahuje nový řádek, pokud jsou soubory uvedeny jeden na řádek.
Řešení 2:
rsync má několik možností, které mohou převzít seznam souborů ke zpracování (--files-from
, --include-from
, atd.).
Například toto bude stačit:
rsync -a /source/directory --files-from=/full/path/to/listfile /destination/directory
Řešení 3:
for file in `cat listoffiles`; do mv "$file" /path/of/destination ; done
za předpokladu bash plus listoffiles
obsahující jeden soubor na řádek. Moje jediná námitka k cestě rsync je, že OP žádá o metodu přesunutí souborů, nikoli jejich kopírování. rsync má více vlajek než královská svatba, takže jsem si jistý, že to lze dále upravit, ale někdy je jednodušší to lepší!
Řešení 4:
rsync --files-from=file_list.txt /path/to/source/ /path/to/dest/
Rsync má oproti cp
další výhodu nebo mv
příkazy, protože automaticky vytvoří složky, pokud neexistují.
Řešení 5:
To závisí na formátu textového souboru, který máte. Pokud máte například seznam souborů zapsaný tak, že každý soubor je umístěn na novém řádku. Můžete použít xargs jako:
$ cat your_text_file | xargs cp -t /path/to/destination
Můžete také použít find
příkaz s -exec
volba. kopírovat/přesouvat soubory.