ファイルX、Y、Zを除くサブフォルダ内のすべてのファイルとサブフォルダを削除する

ファイルX、Y、Zを除くサブフォルダ内のすべてのファイルとサブフォルダを削除する

ファイルが多いそして特定のフォルダ内のサブフォルダはすべて削除したいのですが、X、Y、Zファイルは保持したいと思います。

次のような方法がありますか?

rm * | but NOT grep | X or Y or Z

答え1

rmを使用する代わりに使用する方が便利です。探す。このようなコマンドは、「file」というファイルを除くすべてのエントリを削除します。

find . \! -name 'file' -delete

多くのバージョンでワイルドカードと正規表現の一致をサポートできる必要があります。

findの出力をrmにパイプすることもできます。

find . \! -name '*pattern*' -print0 | xargs --null rm 

答え2

zshを使用し、演算子をsetopt EXTENDED_GLOB使用します~とは別に)

rm -- *~(x|y|z)

OR^演算子(否定):

rm -- ^(x|y|z)

ただし、ファイルを別の場所に移動し、すべてを削除する必要があります。 Enterキーを早すぎるように指でスワイプする方がはるかに安全です。

答え3

最新バージョンのbashには、必要なextglob操作を実行するための構文を提供するシェルオプションがあります(インストールしたバージョンにその機能があるかどうかを確認するには、「パス名の拡張」の下のマニュアルページを参照してください)。

$ shopt -s extglob  # turn on extended globbing
$ rm !(X|Y|Z)

テストするには、まず、削除するファイルのリストが期待どおりに一致することを確認することをおrm勧めします。echo

答え4

アーカイブしたいファイルを移動してください。 1つ上のステップに進み、フォルダを削除します。フォルダを再作成し、そのファイルを再度移動します。

関連情報