이미지가 포함된 이미지 폴더가 있는 프로젝트가 있는데 그 중 일부는 사용되지 않을 것이라고 확신합니다. 그래서 다른 파일에서 참조되지 않는 모든 이미지를 나열하고 싶습니다. 저는 터미널 사용 경험이 많지 않지만 지금까지 제가 알고 있는 내용은 다음과 같습니다.
프로젝트의 루트 폴더에 위치합니다.
모든 이미지를 나열합니다(모두 png라는 것을 알고 있습니다).
find . -name "*.png" -exec basename {} \;
.svn에 없는 모든 파일 검색
grep -Iri --exclude-dir=".svn" 'searchTerm' .
이제 나는 막혔습니다. 다음 단계는 첫 번째 명령을 searchTerm으로 두 번째 명령에 성공하지 못한 채 전송하는 것이었습니다. 어쨌든, 이것은 내가 하려는 것과 거의 정반대입니다. 그러나 유효한 경우 결과는 수동 검사에 사용될 수 있습니다. 하지만 내가 정말로 원하는 것은 참조되지 않은 이미지를 나열하는 것입니다.
답변1
다음을 수행할 수 있습니다.
find . -name '*.png' |
awk -F/ '{print tolower($NF)}' |
sort -u > ~/tmp/png-files &&
grep -IhFriof ~/tmp/png-files --exclude-dir=".svn" . |
awk '{print tolower($0)}' | sort -u | comm -23 ~/tmp/png-files -
이렇게 하면 참조된 적이 없는 png 파일의 소문자 이름이 제공됩니다.
첫 번째 파이프라인은 소문자 파일 이름의 정렬된 목록을 작성합니다.
고정된 문자열 검색을 수행 하고 일치하는 텍스트만 출력하기 위해 -f
with 에 전달합니다 .grep
-F
-o
출력도 정렬되어 소문자로 변환되어 이전 목록과 비교됩니다. 그런 다음 첫 번째 목록에 있는 항목만 보고합니다.