Linux rm指定したファイル以外のファイルを削除する方法の要約

1583 ワード

一、Linuxの下でファイルとフォルダを削除する常用コマンドは以下の通りです.
rm file #    
rm -rf dir #     
#      , rmdir            。

二、作成ファイル(クリップ)以外のすべてのファイルを削除しますか?
1、方法1、面倒な方法は、保存するファイルを他のフォルダにコピーし、ディレクトリを削除し、保存する必要があるファイルを移動することです.
mv keep ../ #    ( ) keep
rm -rf * #             
mv ../keep ./ #          

2、方法2、現在のフォルダで行う必要があります.
rm -rf !(keep) #  keep         
rm -rf !(keep1 | keep2) #  keep1 keep2         

3、方法3、現在のフォルダでgrepとxargsを組み合わせてファイル名を処理する.
ls | grep -v keep | xargs rm #  keep         

説明:lsは、現在のすべてのファイルとフォルダの名前を取得し、grep-v keepを取得し、grep正則マッチングを行ってkeepを検索し、-vパラメータは結果がマッチング以外の結果、すなわちkeep以外のすべてのファイル名を決定し、xargsは標準入力からパラメータを取得して後のコマンドに渡すために使用され、ここで使用するコマンドはrmであり、rmは前に選択したファイルを削除する.メリット:grepを使用して正規表現を使用してファイル名を一致させ、複数のファイルを一度に保持してより正確な処理を行うことができます.4、方法4、findコマンドをlsの代わりに使用し、方法3を改善してフォルダを作成するファイルを処理することができる.
find ./test/ | grep -v keep | xargs rm #    test    keep         

説明:find-nameではなくgrepで名前を選択します.findで名前を選択するのは面倒なので、正規表現のサポートが足りず、指定したファイル名を排除できません.5、方法5、findコマンドを使用して他のファイルを直接削除する:
find ./ -name '[^k][^e][^e][^p]*'  -exec rm -rf {} \; #  keep       。
find ./ -name '[^k][^e][^e][^p]*'  | xargs rm -rf  #  keep       。  !

説明:上記の2行目のコードは、複数のファイルを削除すると-execが複数のプロセスを開始し、xargsがrmプロセスを開始して処理するため、より効率的です.
 
ソース:http://qubuntu.blog.163.com/blog/static/195703121201192143036657/