'rm files*'는 모든 하위 디렉터리에서 일치하는 항목을 모두 제거합니까?

'rm files*'는 모든 하위 디렉터리에서 일치하는 항목을 모두 제거합니까?

wordpress-891.sql현재 디렉터리(하위 디렉터리 내부가 아님)에서 보이는 파일을 제거하고 싶습니다 .

트릭을 수행 할 것인가 rm wordpress-*.sql아니면 하위 디렉터리에서도 일치 항목을 제거할 것인가?

답변1

아니요. 일반적인 globbing *은 재귀적이지 않으며 rm.

디렉터리 이름이 일치하면 제거되지 않습니다. -r디렉터리를 삭제하려면 플래그가 필요합니다.

따라서 해당 파일을 삭제하려는 것이 확실하다면 그렇게 하는 것이 안전합니다.

rm대화형으로 만들 수도 있습니다.

rm -i wordpress-*.sql

그런 다음 각 파일을 삭제하기 전에 확인을 요청합니다.

답변2

예, 트릭을 수행하고 현재 디렉터리에서 해당 스키마가 있는 모든 파일을 제거합니다. 아니요, 하위 디렉터리 내의 파일은 제거되지 않습니다.

다음과 같은 명령을 실행하면 어떤 일이 발생하는지 확신할 수 없는 경우가 있습니다.

rm wordpress-*.sql

그런 다음 다음을 사용하여 실행하십시오 ls.

ls wordpress-*.sql

출력에 표시되는 파일은 제거될 파일입니다.

다음과 같은 목록을 얻으려고 할 때 etc 라는 디렉터리에 있는 파일이 나열되는 것을 방지하려면 with 스위치를 foo*사용하는 것이 좋습니다 .-dlsfoobar/

ls -d foo*

이 트릭은 작업을 재귀적으로 수행하는 데 사용되지 않는 명령에 적용됩니다.

당신이 할 수 있는 또 다른 일은 원하는 입력을 입력하는 것입니다. 예: 그런 다음 + + 를 wordpress-*누르면 이제 모든 일치 항목이 명령 앞에 자동으로 입력됩니다.CtrlAlt*

답변3

아니요, rm하위 디렉터리를 통해 반복되지 않습니다.

보다모든 하위 디렉터리에서 일치하는 파일 삭제하위 디렉터리의 파일을 삭제하는 방법은 다음과 같습니다.

실수로 중요한 것을 삭제하는 것이 걱정된다면 gvfs-trash(파일을 영구적으로 삭제하는 것) 대신 rm(파일을 휴지통으로 보내는 것)을 사용하세요.

답변4

와 같이 일치하는 모든 파일을 찾아서 삭제하려면 명령을 wordpress-*.sql사용할 수 있습니다 find. :)

wordpress-*.sql예를 들어, under 와 일치하는 모든 파일을 제거하려면 test_dir다음과 같이 하십시오.

cd test_dir
find . -name "wordpress-*.sql" -exec rm -f {} \;

프로그램이 실제로 일치하는 파일을 찾을 때마다 옵션 find다음에 나오는 명령을 실행하려고 시도합니다 -exec. 이 경우 rm -f {}실행되며 {}일치 파일 이름으로 변경됩니다. 예:

rm -f wordpress-169.sql

옵션을 사용하여 하위 디렉터리의 깊이를 설정할 수도 있습니다 -maxdepth.

cd test_dir
find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \;

-maxdepth다른 옵션보다 먼저 옵션을 지정해야 합니다 . 그렇지 않으면 정말 보고 싶지 않은 결과를 만날 수도 있습니다.

관련 정보