ここで提供された答えを試してみましたが、うまくいかないようです。以下は、CentOSシステムのこのディレクトリからindex.phpプレフィックスが付いたすべてのファイルを削除しようとしたコマンドです。最初の2人は逃げているようだったが、何もしなかったのですか?
$ find . -prune -name 'index.php.*' -exec rm {} +
$ find . -prune -name 'index*' -exec rm {} +
$ rm index.php*
-bash: /usr/bin/rm: Argument list too long
ベストアンサー1
テストファイルのテストデータセットがあるとします。
$ tree
.
├── index.php
├── index.php.bar
├── index.php.foo
├── keppme.php
└── level1
├── index.php
├── index.php.l1
├── keepme.php
└── level2
├── index.php
├── index.php.foo
└── keepme.php
次に始まるすべてのindex.php
ファイルを削除します。
$ find . -type f -name 'index.php*' -delete
その後、テストファイルは次のようになります。
$ tree
.
├── keppme.php
└── level1
├── keepme.php
└── level2
└── keepme.php
拡張後に追加された項目.php
(例lindex.php.foo
:)を削除し、次のままにしますindex.php
。
$ find . -type f -name 'index.php.*' -delete
これにより、テストデータに以下が表示されます。
$ tree
.
├── index.php
├── keppme.php
└── level1
├── index.php
├── keepme.php
└── level2
├── index.php
└── keepme.php
-delete
xargs
オプションを使用する代わりに、ファイルを並列に削除することもできます。場合によっては、大容量ファイルコレクションの場合、それらを削除するとプロセス全体が高速化される可能性がありますが、必ずしもそうではありません。
rm
100
呼び出しごとの最大ファイル数を使用して、各コア/ CPUでコマンドを実行しますrm
。
$ find . -type f -name 'index.php.*' -print0 | xargs -r0 -P $(nproc) -n 100 rm