searchfiles.txt
파일 이름을 포함하는 이름별 파일이 있다고 가정해 보겠습니다 .
2345098.txt
2345099.txt
2345100.txt
등 (100개 파일 항목)
searchfiles.txt
이제 위의 ()를 입력/매개변수로 전달하여 파일 시스템 파일과 일치하는 모든 파일 이름을 나열하거나 표시하려고 합니다.
Linux에서 이를 어떻게 달성할 수 있습니까?
답변1
while read -r file;do [ -f "$file" ] && echo "$file";done <searchfiles.txt
답변2
locate
주문은 어떻습니까 ?
#!/bin/bash
cat list | while read line; do
locate $line;
done
또한 updatedb
실행하는 것을 기억해야 합니다 locate
.
세부정보 man
:
설명 찾기는updateb(8)에 의해 준비된 하나 이상의 데이터베이스를 읽고 패턴 중 적어도 하나와 일치하는 파일 이름을 한 줄에 하나씩 표준 출력에 씁니다.
답변3
동일한 디렉토리를 보거나 전체 경로를 제공하는 경우 searchFiles.txt
이것을 시도해 볼 수 있습니다 .
ls `cat searchfiles.txt` 2> /dev/null
ls
로 나열되도록 요청합니다 searchfiles.txt
.
ls
존재하는 파일만 나열되며 누락된 파일에 대해서는 메시지가 표시됩니다. 오류를 다음으로 리디렉션하면 /dev/null
누락된 파일에 대한 오류 메시지가 인쇄되지 않습니다.
답변4
파일 이름에 특수 문자가 없다고 가정, 당신은 사용할 수 있습니다 ls
및comm
:
ls | comm -1 -2 - searchfiles.txt
그러나 이는 본질적으로 깨지기 쉬우므로 주의하시기 바랍니다.아니요프로덕션 스크립트에서 사용하세요.
바라보다: