명령을 사용하여 물결표로 끝나는 파일을 제거하려고 했지만 a로 시작 하고 끝나는 rm *.*~
파일은 제거되지 않습니다 (예: ) . 또한 시도했지만 .로 시작하는 파일에서는 작동하지 않습니다 . 누군가 그 이유를 설명할 수 있습니까?.
~
.somefile~
rm *~
.
~
a로 시작하는지 여부에 관계없이 로 끝나는 모든 파일을 제거하고 싶습니다 .
(find/exec 없이 해당 파일을 제거하려고 했습니다). 그게 가능합니까?
답변1
a로 시작하는 파일은 .
기본적으로 숨겨져 있으며 일반 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
$
조금 덜 안전합니다. 이론적으로는 이것이 설정되었는지 여부를 잊어버릴 수도 있습니다. 그러나 이것을 어디에서나 설정하고 일관성을 유지한다면 원하는 대로 될 수도 있습니다.