一度に多くのファイルを削除しようとしていますが、実際に必要なファイルは削除しないように具体的に説明する必要があります。
破損したファイルが多いオーナー -しかし、次から始まる有効なファイルがあります。マスター-2018
だから私は次のようなことをしたい
rm -rf master-* --exclude master-2018*
私に必要なことは可能ですか?
答え1
はい、複数のモードを使用できますfind
。
$ find -name 'master-*' \! -name 'master-2018*' -print0 -prune |
xargs -0 echo rm -fr
(echo
試運転に満足したら削除してください)
現在のディレクトリからのみファイルを削除するには、-maxdepth 1
その後に述語を追加する必要があります。つまり、削除はできません。find
master-1991
subdir/master-1991
答え2
バッシュから:
shopt -s extglob
echo rm master-!(2018*)
echo
正しいと思われる場合は削除してください。
上記は bash の拡張されたグロービングツールを使用して開始しますmaster-
が、2018
すぐ後ろに何も表示されないファイルを一致させます(*
)。
答え3
削除するすべてのファイルにmaster-YYYY *などのパターンがある場合は、次のパターンを使用できます。
rm -rf master-???[0-79]*
rm -rf master-??[02-9]*
rm -rf master-?[1-9]*
rm -rf master-[013-9]*
目標は年から数字を省略することであるため、マスターの次の最初の位置から数字2を省略(削除しない)し、2番目の位置では数字0、3番目の位置では数字1を省略する必要があります。 4番目の場所 - 8回私は少し前に試しましたが、最初の2つだけを実行しても十分でした。
2番目の方法:master-2018を/ tmpなどの他のディレクトリに移動し、master-*を使用してすべてのエントリを削除してからtmpからmaster-2018に戻すことができます。
mkdir /tmp/backup
mv -r master-2018* /tmp/backup
rm -rf master-*
mv -r /tmp/backup/* .