どうもてぃです。
ちょっとだけハマったのでメモ。
ls, grep, xargs rm
上記のコマンドを組み合わせて、いつもどおり溜まったスクリーンショット画像を削除しようとしました。
すると。。。
$ ls | grep 'Screenshot' | xargs rm rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-05-08' を削除できません: そのようなファイルやディレクトリはありません rm: '16-39-46.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-03-14' を削除できません: そのようなファイルやディレクトリはありません rm: '18-18-42.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-04-18' を削除できません: そのようなファイルやディレクトリはありません rm: '10-37-00.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-03-12' を削除できません: そのようなファイルやディレクトリはありません rm: '22-42-45.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-03-07' を削除できません: そのようなファイルやディレクトリはありません rm: '18-41-14.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-04-16' を削除できません: そのようなファイルやディレクトリはありません rm: '20-19-58.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-05-06' を削除できません: そのようなファイルやディレクトリはありません rm: '18-28-44.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-03-01' を削除できません: そのようなファイルやディレクトリはありません rm: '17-38-51.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-03-12' を削除できません: そのようなファイルやディレクトリはありません rm: '17-43-33.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-03-06' を削除できません: そのようなファイルやディレクトリはありません rm: '10-59-12.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-03-26' を削除できません: そのようなファイルやディレクトリはありません rm: '10-35-37.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-04-28' を削除できません: そのようなファイルやディレクトリはありません rm: '16-34-29.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-04-04' を削除できません: そのようなファイルやディレクトリはありません rm: '11-03-00.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-02-08' を削除できません: そのようなファイルやディレクトリはありません rm: '15-21-58.png' を削除できません: そのようなファイルやディレクトリはありません rm: './Screenshot' を削除できません: そのようなファイルやディレクトリはありません rm: 'from' を削除できません: そのようなファイルやディレクトリはありません rm: '2019-01-25' を削除できません: そのようなファイルやディレクトリはありません rm: '14-15-28.png' を削除できません: そのようなファイルやディレクトリはありません
ん???!!!??!?!?
前やった時こんなのでたっけ?状態になりました。
他にも、 find . -name 'Screenshot*' | xargs rm
や find . -type f -name '*[Screenshot]*' | xargs rm
等も試してみましたが、ダメ。
結論
xargsコマンドは区切り文字に空白を使っているらしい。
つまり、空白の入ってるファイル名は別々のものと認識され、xargsに渡されてrmが実行されてしまうと。
そのため、区切りを空白文字ではなくnull文字で認識されなければいけないようです。
$ find . -name 'Screenshot*' -print0 | xargs -0 rm
xargsの -0
オプションの形式に合わせて、findコマンドで -print0
を指定してあげる。
これで解決しました。