Linux 一時ファイルの削除

Linux 一時ファイルの削除

コマンドを使用して、チルダで終わるファイルを削除しようとしましたが、で始まり で終わるファイル(例: rm *.*~) は削除されません。 も試しましたが、 で始まるファイルには機能しません。なぜなのか説明してもらえますか?.~.somefile~rm *~.

~で始まるかどうかに関係なく、で終わるすべてのファイルを削除したいです.(find/exec なしでこれを実行しようとしていました)。 それは可能ですか?

答え1

で始まるファイルは.デフォルトでは非表示になっており、通常の には表示されませんls。これらのファイルは表示されていない可能性があるため、手動で含めない限り、シェルは通常これらのファイルと一致しません。これは次のように実行できます。

rm *~ .*~

答え2

上記の回答はおそらくより安全ですが(副作用が少ないため)、完全を期すために...

bash シェル (Linux でほとんどの人が実行しているもの) には、ドットファイルを glob に含めるかどうかを指定するフラグがあります。これは で設定しますshopt -s dotglob。以下のシーケンスは、フラグを設定する前と設定後です。dotglob が設定されると、rm によってそれが削除されることに注意してください。

$ touch .somefile~
$ rm *~
rm: cannot remove `*~': No such file or directory
$ ls -A
.somefile~
$ shopt -s dotglob
$ rm *~
$ ls -A
$

安全性は少し低くなります。理論的には、これが設定されているかどうかを忘れてしまう可能性があります。ただし、これをすべての場所で設定し、一貫性を保つ場合は、これが望ましい方法かもしれません。

関連情報