특정 파일을 검색하려면 다음 명령을 사용합니다.
find . -type f -name Client.php | xargs grep WARNING
삭제 명령이 발생하기 전에 사용자에게 메시지가 표시되도록 삭제 명령을 추가하는 방법을 모르겠습니다.
답변1
xargs
여기에서 파이프를 연결하여 조회에 다시 참여할 수 없으며 find
별도로 명령을 실행할 수 있습니다.grep
이것-exec
기초적인하나 이상의 파일에 대해 명령을 실행합니다. 명령 자체가 성공적인 결과로 종료되는 경우에만 성공하고 오른쪽의 피연산자를 계속 처리하므로
find . -type f -name Client.php -exec grep -q WARNING {} \; -exec echo {} \;
~ 할 것이다인쇄하다"WARNING"을 포함하는 "Client.php"라는 이름의 모든 파일에 대한 경로입니다. 초를 변경 -exec ... \;
하여 -delete
제거하거나 명령을 변경하여 사용 rm
하거나 mv
처리할 수 있습니다.
세미콜론은 한 번에 하나의 파일만 검사하도록 보장하며 성공 시 다음과 같은 실제 동작을 얻습니다.
기본 표현식에 <세미콜론>이 붙은 경우 유틸리티는유틸리티 이름각 경로 이름에 대해 한 번 호출되어야 하며 유틸리티가 종료 상태로 0 값을 반환하는 경우 기본 경로는 true로 평가되어야 합니다.
전체가 -exec ... \;
하나의 블록이므로 를 사용하는 경우 명령 -delete
은 물론 세미콜론도 제거해야 합니다 .-exec
위의 명령을 실행하는 것이 좋습니다첫 번째그리고 실제로 삭제하기 전에 원하는 파일만 포함되어 있는지 확인하세요. 그러나 요청하지 않는 완전한 삭제 명령은 다음과 같습니다.
find . -type f -name Client.php -exec grep -q WARNING {} \; -delete
조심해서 진행해라!
답변2
스크립트를 작성할 수 있습니다:
#!/bin/bash
FINDFILE=Client.php
if [[ $(find . -type f -name $FINDFILE | xargs grep "WARNING") ]] ; then
rm -i $FINDFILE
else
echo "File with warning not found."
fi
/usr/local/bin, chmod +x /usr/local/bin/scriptname에 스크립트를 배치합니다.
이제 언제 어디서나 할 수 있습니다.(.sh 확장자를 사용하지 않는 것이 가장 좋습니다)