특정 이름이지만 확장자가 다른 모든 파일을 한 번에 삭제

특정 이름이지만 확장자가 다른 모든 파일을 한 번에 삭제

다음 파일 세트가 포함된 디렉토리가 있습니다.

cheatsheetold.aux
cheatsheetold.log
cheatsheetold.out
cheatsheetold.pdf
cheatsheetold.synctex.gz
cheatsheetold.tex
cheatsheetnew.aux
cheatsheetnew.log
cheatsheetnew.out
cheatsheetnew.pdf
cheatsheetnew.synctex.gz
cheatsheetnew.tex

내가 하고 싶은 일은 모두 삭제하는 것이다cheetsheetold.

cheatsheetold.aux
cheatsheetold.log
cheatsheetold.out
cheatsheetold.pdf
cheatsheetold.synctex.gz
cheatsheetold.tex

만질 필요가 없습니다cheatsheetnew

cheatsheetnew.aux
cheatsheetnew.log
cheatsheetnew.out
cheatsheetnew.pdf
cheatsheetnew.synctex.gz
cheatsheetnew.tex

나는 이미 그것을 보았다이것은 또 다른 질문입니다, 그러나 두 파일 이름 모두에 완전한 확장자가 있으므로 문제가 해결되지 않습니다.

답변1

Unix에는 파일 확장자가 없으며 Microsoft의 Windows에도 없습니다(Windows ME 이후는 아니지만 파일 탐색기에는 여전히 개념이 있습니다). 당신이 해야 할 일은 (귀하의 경우 cheatsheetold..

를 사용하여 이 작업을 수행할 수 있습니다 cheatsheetold.*. 그런 다음 파일 목록을 에 전달합니다 rm. 어떤 명령에도 사용할 수 있습니다. 이것은 문제가 아닙니다 rm.

연습하다echo cheatsheetold.*

답변2

파일을 삭제할 때 어떤 종류의 와일드카드를 사용하려는 쉘(bash, fish, zsh, csh)에 대한 설명이 없습니다.

bash잘 알려진 쉘 이기 때문에 간단히 다음 명령을 사용할 수 있다고 명시합니다.

rm -- cheatsheetold.*

*--bash 쉘 확장으로 인해 들여쓰기되지 않은 오류를 방지하려면 as 뒤에 와일드카드를 사용하십시오.

명령줄에 env | grep 'SHELL' 사용 중인 셸이 표시될 수 있습니다. 또한 좀 더 단순화된 POSIX 쉘에서 명령줄을 테스트했습니다 dash.

저는 다른 쉘(예: csh 및 tsh 또는 Fish)을 전혀 사용하지 않으므로 여기서 globbing이 어떻게 작동하는지 알 수 없습니다.

어떤 셸이 실행 중인지 알 수 있는 또 다른 방법은 현재 프로세스(셸)의 PID가 ps -p $$어디에 있어야 하는지 와 ps 도구가 현재 셸의 PID로 제한된 프로세스를 나열하는 것입니다.$$

https://help.ubuntu.com/community/ShellGlobbing

답변3

와일드카드를 사용할 수 있지만 일치하는 다른 파일이 삭제될 수 있으므로 매우 주의해야 합니다.

rm cheatsheetold.*

위의 명령은 cheatsheetold.이름이 무엇이든 시작하고 뒤에 아무 것도(예: 확장자) 오는 파일을 삭제합니다.

관련 정보