すべてのターゲットファイルが削除されました。もちろん、削除を再実行しようとすると、ファイルは削除されません。時間を無駄にしてすみません。
私は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
回答を使用して議論を入力することをお勧めしますxargs
。find
削除する重複項目を識別するために簡単に使用できないと信じているため、これは私のシナリオには役立ちません。また、fdupesジョブは約12時間以上実行されたので、このデータセットを必ず使用したかったです。
私が知っている限り、fdupes
自動削除からディレクトリを除外する方法がないので、すぐにそれを行うことはできません。
答え1
xargs -0
nullで終わる文字列が必要なので、うまくいきませんが、見つからないので、すべての入力を読み取り、その引数にワイルドカードを使用します。
\0
次のように各新しい行を変換します(各行にファイル名を付けたい)。
cat real-dupes.txt | tr '\n' '\0' | xargs -0 rm {}
答え2
デフォルトでは空白にxargs
分割されます。あなたは使用することができます非標準 -0
オプション文字に分割されますが、\000
入力は期待どおりに準備する必要があります。 (find ... -print0
これはこれを行う1つの方法です。バージョンに対応するfind
オプションがあるとします-print0
。)
ファイル名に新しい行が含まれていない場合(たとえば、1行に1つのファイル)、xargs
次のように使用できます。
xargs -I{} rm {} <real-dupes.txt
マニュアルページには、xargs
フラグの次の説明があります-I
。
-I replace-str
replace-str
初期引数の発生を標準入力から読み取った名前に置き換えます。また、引用符のないスペースは項目を終了せず、代わりに区切り文字は改行文字です。意味-x
します-L 1
。