3

ワイルドカードを使用して、最初または最後を除いて、文字列を埋め込み文字列として含むファイルを削除するにはどうすればよいですか。

私は1か月足らずでUbuntuを始めたアマチュアです。

4

2 に答える 2

6
rm ?*foo?*

前後に少なくとも1文字ある場合は、fooを含むファイルを削除します。したがって、「foobar」と「barfoo」は削除されませんが、「barfoobar」は削除されます。

予防措置として、

ls ?*foo?*

まず、間違ったものを削除していないことを確認します。また、 rm?* foo?*はほぼ間違いなく非常に悪いので、誤ってスペースを含めないように十分注意してください。ある程度の保護を提供するには、引数を引用符で囲みます。

rm "?*foo?*"
于 2012-09-26T04:54:03.673 に答える
1

これは単一の拡張パターンでは不可能だと思います。grep代わりにフィルタリングに使用できます。

ls -d '*foo*' | egrep -v '^foo|foo$' | xargs rm

したがって、lsを含むすべてのものをリストし、最初/最後に一致するファイルを削除し、最後にfoo残りの各ファイルに対してコマンド(この場合)を実行します。egrepxargsrm

この手法の危険な点は、ファイル名に改行やアスタリスクなどの特殊文字が含まれている可能性があるため、自己責任で使用してください。

于 2012-09-26T06:50:05.280 に答える