Solusi 1:
Untuk menghindari penggunaan cat
yang tidak berguna (dan jika Anda tidak menggunakan rsync
):
xargs -a file_list.txt mv -t /path/to/dest
Ini akan menangani semua nama file yang valid, kecuali berisi baris baru, jika file dicantumkan satu per baris.
Solusi 2:
rsync memiliki beberapa opsi yang dapat mengambil daftar file untuk diproses (--files-from
, --include-from
, dll.).
Misalnya, ini akan berhasil:
rsync -a /source/directory --files-from=/full/path/to/listfile /destination/directory
Solusi 3:
for file in `cat listoffiles`; do mv "$file" /path/of/destination ; done
dengan asumsi bash, plus listoffiles
berisi satu file per baris. Satu-satunya keberatan saya terhadap rute rsync adalah bahwa OP meminta metode untuk memindahkan file, bukan menyalinnya. rsync memiliki lebih banyak bendera daripada pernikahan kerajaan, jadi saya yakin ini dapat dimodifikasi lebih lanjut untuk melakukannya, tetapi terkadang lebih sederhana lebih baik!
Solusi 4:
rsync --files-from=file_list.txt /path/to/source/ /path/to/dest/
Rsync memiliki manfaat tambahan dibandingkan cp
atau mv
perintah karena itu akan secara otomatis membuat folder jika tidak ada.
Solusi 5:
Ini tergantung pada format file teks yang Anda miliki. Misalnya, jika Anda memiliki daftar file yang ditulis sedemikian rupa sehingga Setiap file terletak di baris baru. Anda dapat menggunakan xargs seperti:
$ cat your_text_file | xargs cp -t /path/to/destination
Anda juga dapat menggunakan find
perintah dengan -exec
pilihan. untuk menyalin/memindahkan file.