어떤 파일이 삭제되는지 확인하기 위해 rm의 dry run을 어떻게 실행합니까?


87

rm리눅스에서 수행 할 때 어떤 파일이 삭제되는지 확인하고 싶습니다 . 대부분의 명령에는 그러한 정보 만 표시하는 드라이 런 옵션이있는 것 같지만에 대한 옵션을 찾을 수없는 것 같습니다 rm. 이것도 가능합니까?


또한 어떤 파일이 권한 부족으로 오류를 생성하는지 확인하고 싶습니다.
Simon Woodside 17

답변:


121

실행하고 싶다고 가정 해보십시오.

rm *.txt

당신은 그냥 실행할 수 있습니다 :

echo rm *.txt

또는 심지어 :

echo *.txt

rm셸이 *.txt아닌을 확장하기 때문에 어떤 파일 을 삭제 할지 확인하십시오 rm.

도움이되지 않는 유일한 시간은입니다 rm -r.

당신이 반복적으로 파일과 디렉토리를 제거하려면, 당신은 사용할 수있는 find대신에 rm -r, 예를 들어,

find . -name "*.txt" -print

당신이 원하는 것을 다음 경우에는 변경 -print에를 -delete:

find . -name "*.txt" -delete

찾기는 좋은 선택 IMO입니다. 그리고 그래픽 프리젠 테이션을 원한다면 tree.
noisebleed

2
거의 완벽합니다. find . -name "*.txt" -delete재귀 적 인 것처럼 보이지 않습니다. 모든 파일을 제거했지만 다음에 나열된 디렉토리는 제거하지 않았습니다.-print
Oscar Godson

1
@OscarGodson 파일을 제거한 후 디렉토리가 비어 있다고 가정하면 다음과 같이 제거 할 수 있습니다.find . -type d -empty -delete
datguy

1
@OscarGodson- find파일이 여전히 포함 된 디렉토리는 삭제하지 않습니다 ( rm dir/없는 파일과 동일 -r). 먼저 디렉토리를 비우거나 적절한 옵션과 함께 사용 find하여 -exec rm이를 수행해야합니다. 예find . -depth -name "*.txt" -exec rm -r {} +
shalomb

echo rm *.txt방법을 사용하면 단점이있는 것 같습니다. 결과는 세로 목록이 아닌 연결된 목록 (이전 파일 뒤에 하나의 파일이있는 긴 문자열)으로 표시됩니다. 출력을 세로 목록 (한 줄에 한 파일)으로 표시 할 수있는 방법이 있습니까? (업데이트 :이 find방법은 내가 요청한 것을 수행한다는 것을 알았습니다. 그래서 나는 그것으로 실행할 것입니다.)
inspirednz

16

당신은 말할 수 있습니다 :

rm -i

대화식 모드에서 실행하려면 rm각 파일을 삭제할지 묻는 메시지가 표시됩니다. 각 파일에 대해 no로 답하여 영향을받는 파일을 확인할 수 있습니다.


8
많은 수의 파일에서는 다소 어렵습니다.
Cory Klein

9
예 n | rm -i # 최소 댓글 길이에 부합하는 의견
Joshua

4

다음에 ls의해 제거 될 모든 파일을 나열 하는 데 사용할 수 있습니다 rm.

ls ../path/*.txt

재귀로 삭제 될 파일을 보려면 목록을 작성해야하는 경우 rm다음 -R플래그 를 사용하십시오 ls.

ls -R ../path/*.txt

좋은 지적. 네 스팅 수준을 알고 있다면 다음과 같이하면됩니다.ls */*/*.txt
Veneet Reddy

1
네가 옳아. 으로 -R옵션을 선택합니다.
Veneet Reddy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.