テキストファイルを読み、そのファイルだけを別のフォルダに移動します。

テキストファイルを読み、そのファイルだけを別のフォルダに移動します。

100個のログファイルを含むフォルダがあり、その一部にはデータがあり、一部にはデータがありません。データを含むファイルを選択し、「goodfiles.txt」というテキストファイルに名前を保存するスクリプトがあります。テキストファイルのファイルを読み、他のフォルダに移動する方法を知りたいです。私はこれを試しましたが、
cat /root/testing2/goodfiles.txt | xargs mv -f /root/testing2/moved/
次のエラーが発生しました。


mv:ターゲット(log1508.log)は、mv:ディレクトリまたはファイルを移動するディレクトリでなければなりません。

誰でも私を助けることができますか?

答え1

以下は少し異なりますが、概念的には単純なアプローチです(パイプを除く)。

for fileName in `cat goodfiles.txt`; do mv $fileName /root/testing2/moved/; done

答え2

--replaceオプションを使用して、xargsが置き換える部分を変更し、代替文字列を指定できることを覚えておくと便利です。それ以外の場合は、行を最後に追加します。

ほぼ同じことができた

cat filelist |xargs --replace='{}' mv {} ./targetdir/

たぶん試してみてください。

cat /root/testing2/goodfiles.txt |xargs --replace '{}' /root/testing2/moved

答え3

複数のソースを単一のターゲットに移動するために、正確に必要なオプションと-fGNUオプションを混同しているようです。mv-txargs

   mv [OPTION]... -t DIRECTORY SOURCE...

plainはxargs入力をスペースで区切られた引数で除算するため、ファイル名にスペースが含まれているとコマンドは中断されます。同時にそれもウルムチ大学

だから

xargs -d'\n' mv -t /root/testing2/moved/ </root/testing2/goodfiles.txt

関連情報