xargsは行のスペースを処理できません。

xargsは行のスペースを処理できません。

すべてのターゲットファイルが削除されました。もちろん、削除を再実行しようとすると、ファイルは削除されません。時間を無駄にしてすみません。


私はcygwinでbashを使っています。

私の出力はfdupesファイルにあります。そのままにして、リストされている残りのファイルを削除したいディレクトリを除外するために出力をgrepingしています。

スペースがある項目があります。

./NewVolume/keep/2009/conference/conference/conference 004.jpg

任意の旅行xargs

$ cat real-dupes.txt |xargs rm {}
...
rm: cannot remove ‘2009/conference/conference/conference’: No such file or directory`

切り替えようとすると、-0次の行が一緒にグループ化されているように見えます。

$ cat real-dupes.txt |xargs -0 rm
xargs: argument line too long

他の質問には回答があり、質問者はfind回答を使用して議論を入力することをお勧めしますxargsfind削除する重複項目を識別するために簡単に使用できないと信じているため、これは私のシナリオには役立ちません。また、fdupesジョブは約12時間以上実行されたので、このデータセットを必ず使用したかったです。

私が知っている限り、fdupes自動削除からディレクトリを除外する方法がないので、すぐにそれを行うことはできません。

ベストアンサー1

xargs -0nullで終わる文字列が必要なので、うまくいきませんが、見つからないので、すべての入力を読み取り、その引数にワイルドカードを使用します。

\0次のように各新しい行を変換します(各行にファイル名を付けたい)。

cat real-dupes.txt | tr '\n' '\0' | xargs -0 rm {}

おすすめ記事