현재 다음과 같은 파일 디렉터리가 있습니다.
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