locate에 의해 리턴 된 모든 파일을 삭제하는 방법 다음과 같습니다. 1

현재 그의 행동은 다음과 같습니다.

1 단계:

locate fooBar
/home/abc/fooBar
/home/abc/Music/fooBar

2 단계:

각 행을 복사하여 붙여 넣어 수동으로 제거를 수행하십시오.

rm /home/abc/fooBar
rm /home/abc/Music/fooBar

한 번에 어떻게해야합니까? 같은 것

fooBar 찾기> rm

감사.



답변

다른 챕터에서 이미 언급했듯이 xargs가 당신의 친구입니다. 이 도구는 정말 강력한 도구이므로 도구를 설명하고 일반적인 문제에 대한 해결 방법을 제공하려고합니다.

xargs는 입력에서 한 줄을 가져 와서 다른 명령에 추가하여 입력의 모든 줄에 대해 다른 명령을 실행합니다. 그래서 입력하여 locate foobar | xargs rm -f상기 찾아 명령 출력한다 단부 상에 패치rm -f명령에 의해 생산 라인마다 실행 locate foobar.

문제 :

그러나 locate에 의해 반환 된 줄에 공백이 있으면 어떻게됩니까? rm -frm에 전달 된 인수는 파일이어야하고 (-r 스위치를 사용하지 않는 한) 공백이 있으면 파일 경로를 이스케이프하거나 인용해야하기 때문에 명령 이 중단됩니다 .

xargs는 입력을 추가하는 대신 다음 명령으로 입력 을 대체 하기 위해 -i 스위치를 제공합니다 . 제안을 다음으로 변경하겠습니다.

locate foobar | xargs -ixxx rm -f 'xxx'

locate에 의해 반환 된 파일 이름에 아포스트로피가 포함 된 경우에만 중단됩니다.

rm -f 사용에 대해 조심 해야한다는 qbi와 동의해야합니다 ! -p 플래그를 사용하여 xargs하거나 찾기 foobar를 xargs로 보내기 전에 자체적으로 실행하거나 -f를 rm에서 삭제하십시오.

locate foobar | xargs -p -ixxx rm -f 'xxx'

답변

에 사용할 수있는 옵션이 더 필요할 수 있습니다 xargs. 로 먼저 테스트하십시오 xargs -p. 정상이면 -p옵션을 제거하십시오 .

locate foobar | xargs rm

답변

locate에 의해 리턴 된 모든 파일을 삭제하려면 터미널에서 다음 명령을 실행하십시오.

locate foobar | xargs rm -f