.bak
1つのコマンドラインを使用して、現在のディレクトリとすべてのサブフォルダーから特定の拡張子(たとえば)を持つすべてのファイルを安全に削除するにはどうすればよいですか?単純に、rm
一度間違って使用したので使用するのが怖いのですが、今はアドバイスが必要です。
.bak
1つのコマンドラインを使用して、現在のディレクトリとすべてのサブフォルダーから特定の拡張子(たとえば)を持つすべてのファイルを安全に削除するにはどうすればよいですか?単純に、rm
一度間違って使用したので使用するのが怖いのですが、今はアドバイスが必要です。
回答:
あなたrm
が恐れている場合、この場合に使用する必要さえありません。使用find
:
find . -name "*.bak" -type f -delete
ただし、注意して使用してください。最初に実行:
find . -name "*.bak" -type f
削除するファイルを正確に確認します。
また、それ-delete
がコマンドの最後の引数であることを確認してください。の前に置くと-name *.bak argument
、すべてが削除されます。
rm *.bak
サブディレクトリでは機能しません。
rm *.bak
は、現在のディレクトリにある.bakで終わるすべてのファイルのみが削除されます。また、グロブをいじるのに必要なサブディレクトリで処理を行うには、-rオプションを使用するか、検索例を使用します。
rm -r *.bak
!また.bak
、すべてのコンテンツで終わるディレクトリも削除します。
-delete
がコマンドの最後の引数であることを確認してください。-name *.bak
引数の前に置くと、すべてが削除されます。
find . -name "*.bak" -type f -print0 | xargs -0 /bin/rm -f
-delete
フラグの代わりにこれを使用することに利点はないと思いますfind
。詳細については、findを使用してファイルを削除するためのGNUマニュアルエントリを参照してください。
ファイルの削除は、私にとってはあなたが使うべきものではありませんrm
。以下が代替案です。
sudo apt-get install gvfs # install a tool that allows you to put stuff in the trash
alias "trash"="gvfs-trash" # you can also put this in .bash_aliases or simply use the command without alias
trash *.bak # trash the files (thus moving them to the trash bin)
Flimmがコメントで述べているように:
パッケージ
trash-cli
は、gvfs-trash
gvfsに依存しない場合と同じことを行います。
そう:
sudo apt-get install trash-cli
trash-cli
パッケージには、必要な処理を行うコマンドが用意されているため、このエイリアスを作成する必要trash
はありません。
Eliah Kaganが広範なコメントで明らかにしているように、を使用してこの再帰を行うこともできますfind
。その場合、エイリアスを使用できないため、以下のコマンドはがインストールされていることを前提としていますtrash-cli
。エリアのコメントを要約します。
このコマンドは.bak
、現在のディレクトリまたはそのサブディレクトリ以下のすべてのファイルとシンボリックリンクを検索して表示します。
find . -name '*.bak' -xtype f
それらを削除するに-exec
は、trash
コマンドでを追加します:
find . -name '*.bak' -xtype f -exec trash {} +
-xtype f
ファイルとファイルへのシンボリックリンクを選択しますが、フォルダーは選択しません。.bakフォルダーも削除するには、その部分を削除し、を使用して-execdir
、ディレクトリ内のファイルのcannot trash non-existent
エラーを回避し.bak
ます.bak
。
find . -name '*.bak' -execdir trash {} +
rm
物事を削除するために使用しない」は物議を醸す声明ですが、物事を元に戻すことができるものを使用する方が賢明であることが多いことに同意する必要があります。
trash-cli
はにgvfs-trash
依存しない場合と同じことを行いgvfs
ます。
find . -name "*.bak" -type f
されたものを表示すると言うようtrash *.bak
です。それは本当にあなたの言うことですか?あなたがゴミ箱にディレクトリを移動することができtrash
たりgvfs-trash
、しかしtrash *.bak
唯一の名前で終わるファイルやディレクトリに移動します.bak
と、現在のディレクトリにすぐに常駐します。シェルが展開される*.bak
ため、サブディレクトリ内のファイル自体にtrash *.bak
は影響しません。.bak
.bak
ls *.bak
(これはあなたの言うことだと思います)はどのようなtrash *.bak
ゴミをリストします。find . -name '*.bak' -xtype f -exec trash {} +
は、の下にあるすべての.bak
ファイルを破棄します.
。エイリアスを使用できないため、代わりにインストールtrash-cli
または書き込みgvfs-trash
を行ってください。以下に例を示します。 -xtype f
ファイルとファイルへのシンボリックリンクを選択しますが、フォルダーは選択しません。.bak
フォルダーも削除するにはfind . -name '*.bak' -execdir trash {} +
、を使用して、ディレクトリ内のファイルのcannot trash non existent
エラーを回避し.bak
ます.bak
。回答の中でこれを自由に使用してください。
考慮された名前または接尾辞を持つすべてのファイルを再帰的に削除します。
find . -name '*.pyc' -type f -delete
考慮された名前を持つすべてのディレクトリを再帰的に削除します。
find ~ -path '*/__pycache__/*' -delete
find ~ -type d -name '__pycache__' -empty -delete
少し厳密に制御されますが、1行で:
find ~ -path '*/__pycache__*' -delete
[ 注 ]:
d
はディレクトリオプションでf
あり、ファイルオプションです。
gitリポジトリ内にいる場合は、次を使用できます。
git clean -fdx
これにより、追跡されていないファイルと.gitignore内のファイルが削除されます。
rm *.bak
ますか?