파일 이름을 기준으로 디렉터리 파일 비교

파일 이름을 기준으로 디렉터리 파일 비교

현재 다음과 같은 파일 디렉터리가 있습니다.

abcd.txt
abcd_.txt
qrst.txt
qrst_.txt
wxyz.txt
wxyz_.txt

이론적으로 abcde_.txt의 모든 줄은 abcd.txt에 포함되어야 하고, qrst_.txt의 모든 줄은 qrst.txt에 포함되어야 하는 식입니다. 두 파일을 비교하여 개별적으로 테스트할 수도 있지만 전체 디렉터리에 대해 이 작업을 수행하는 더 효율적인 방법을 찾으려고 노력하고 있습니다.

이와 같은 상황에서 파일 쌍이 많지만 각 파일이 어떤 문자열로 시작하는지 미리 알 수 없는 경우 두 관련 파일의 각 세트를 한 번씩 반복하여 처리하는 방법이 있습니까?

답변1

이름 목록에서 찾을 수 있습니다 *_.txt. 두 파일을 _.txt비교 하려면 이름에서 .txt.

for f1 in *_.txt; do
    f2="${f1%_.txt}.txt"
    compare "$f1" "$f2"
done

답변2

file.txt각각 에 대한 파일이 있다는 것을 이미 알고 있다면 다음을 file_.txt사용하여 _파일을 구별 할 것입니다.

다음과 같은 코드가 작동합니다.

files=(`ls | grep -v "_"`)
for f1 in ${files[@]}
do
     f2=`echo $f1 | sed -r 's/.txt/_.txt/g'`
     diff $f1 $f2
done

관련 정보