19

次のファイルを含むディレクトリがあります。

.
├── bla-bla-bla1.tar.7z
├── bla-bla-bla2.tar.7z
├── bla-bla-bla3.tar.7z
└── _bla-bla-bla_foo.tar.7z

次の形式のすべてのファイルを見つけ削除する必要があります。*.7z_*.7z

私はもう試した:

find /backups/ -name "*.7z" -type f -mtime +180 -delete

どうすればそれができますか?

4

4 に答える 4

11

正規表現では、^演算子は「~を除く任意の文字」を意味します。したがって[^_]、「_ 以外の任意の文字」を意味します。例えば:

"[^_]*.7z"

したがって、で始まるファイルを除外する場合_、完全なコマンド ラインは次のようになります。

find /backups/ -name "[^_]*.7z" -type f -mtime +180 -delete

の出現を除外したい場合は次のようにとの演算子を_使用できます。andnotfind

find . -name "*.7z" -and -not -name "*_*"
于 2013-09-26T06:24:36.840 に答える
0

そのはず

 find . -name "*[^_].7z" 
于 2013-09-26T06:38:08.403 に答える
0

bash 4.2.25 を使用している場合の簡単な方法は、単純に bash パターン マッチングを使用してすべての .7z を削除することですが、_.7z を持つものは次のように削除します。

touch a.7z b.7z c.7z d_.7z e_.7z f.txt
rm *[^_].7z
于 2013-09-26T06:39:13.877 に答える