解決策 1:
cat
の無駄な使用を避けるために (そして rsync
を使用しない場合 ):
xargs -a file_list.txt mv -t /path/to/dest
これは、ファイルが 1 行に 1 つずつリストされている場合、改行が含まれていない限り、有効なファイル名を処理します。
解決策 2:
rsync には、処理するファイルのリストを取得できるオプションがいくつかあります (--files-from
、 --include-from
など)
たとえば、これでうまくいきます:
rsync -a /source/directory --files-from=/full/path/to/listfile /destination/directory
解決策 3:
for file in `cat listoffiles`; do mv "$file" /path/of/destination ; done
bash を想定し、プラス listoffiles
1 行に 1 つのファイルが含まれます。 rsync ルートに対する私の唯一の異議は、OP がファイルをコピーするのではなく、ファイルを移動する方法を要求することです。 rsync には王室の結婚式よりも多くのフラグがあるので、それを行うためにさらに変更できると確信していますが、単純な方が良い場合もあります!
解決策 4:
rsync --files-from=file_list.txt /path/to/source/ /path/to/dest/
Rsync には cp
よりも優れた利点があります または mv
フォルダーが存在しない場合は自動的に作成されるためです。
解決策 5:
これは、使用しているテキスト ファイルの形式によって異なります。たとえば、各ファイルが新しい行にあるように記述されたファイルのリストがあるとします。次のような xargs を使用できます:
$ cat your_text_file | xargs cp -t /path/to/destination
また、 find
を使用できます -exec
のコマンド オプション。ファイルをコピー/移動します。