별도의 파일에서 파일 이름 예외 목록이 있는 파일 찾기

별도의 파일에서 파일 이름 예외 목록이 있는 파일 찾기

내 디렉토리에 10개의 파일이 있습니다..

test1.txt
test2.txt
test3.txt
.
.
test10.txt

제외 파일 이름인exclusion.txt도 있으며 그 파일 이름은 다음과 같습니다.

test1.txt
test2.txt
test3.txt
text4.txt

제외 파일에서 파일 이름을 제외하고 결과를 제공하는 find 명령이 필요합니다.

test5.txt
test6.txt
test7.txt
text8.txt
test9.txt
text10.txt

답변1

for file in *.txt;do grep ${file} exclude.txt >/dev/null;r=${?}; if [ $r -ne 0 ]; then echo ${file};fi;done| grep -v exclude.txt

Except.txt가 동일한 디렉터리에 없으면 grep파이프 다음의 마지막 명령을 생략할 수 있습니다.|

답변2

예쁘지는 않지만 작업이 완료됩니다 :)

find . -regextype posix-extended  \! -regex "\./($(cat exclude.txt | tr '\n' '|')).*$" 

참고: 이는 Except.txt의 마지막 줄에 NEWLINE이 없는 경우에만 작동합니다.

답변3

find명령을 실행 한 다음 grep텍스트 파일에 나열된 파일과 반대되는 작업을 수행할 수 있습니다.

find | grep -v -f exclude.list

그러나 이는 해당 이름을 가진 디렉터리, 즉 dir/test1.txt/actual_file결과의 마지막 부분으로 제한되지 않는 파일 도 제외합니다 find.

이 문제를 해결하려면 $제외 목록 항목 끝에 추가하여 행 끝에서만 일치하는지 확인하세요.

test1.txt$

등.

비행 중에는 이렇게 보입니다.

find | grep -v -f <( sed 's/$/$/' exclude.list )

-type f결과에 파일만 포함되도록 하는 옵션을 추가할 수도 있습니다 .

관련 정보