コマンドを使用して、チルダで終わるファイルを削除しようとしましたが、で始まり で終わるファイル(例: 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
$
安全性は少し低くなります。理論的には、これが設定されているかどうかを忘れてしまう可能性があります。ただし、これをすべての場所で設定し、一貫性を保つ場合は、これが望ましい方法かもしれません。