A 디렉터리에 있는 파일의 내용을 다른 디렉터리에 있는 실제 파일과 비교해야 합니다. ex- 디렉토리 A에는 test.txt 파일이 있습니다. test.txt에는 언급되었지만 디렉토리 B에는 없는 항목이 강조 표시되어야 합니다. 비슷한 일을 하고 있는데 작동하지 않습니다. test.txt 파일에서 마지막 단어만 검색합니다.
#!/bin/sh
IFS=$'\n' dirA=$1 dirB=$2
for x in $(cat < "$1"); do base_name="${x##/}"
set -- "$dirB"/"$base_name"*
if [ -e "$1" ]; then
for y; do
echo "$base_name found in B as ${y##*/}" done
else
echo "$x not found in B" fi done.
답변1
diff를 사용하면 문제가 해결될 수 있습니다.
diff -crs Dir1 Dir2
파일이 존재하는지, 동일하거나 다른지 표시됩니다.
grep이 포함된 파일 이름이 당신이 찾고 있는 이름일 수 있습니다.
답변2
#!/bin/sh
manifest=$1
topdir=$2
while IFS= read -r name; do
pathname="$topdir/$name"
if [ -e "$pathname" ]; then
printf 'Found: %s\n' "$pathname" >&2
else
printf 'Not found: %s\n' "$pathname" >&2
fi
done <"$manifest"
스크립트는 매니페스트 파일을 첫 번째 명령줄 인수로 사용하고 디렉터리 경로를 두 번째 인수로 사용합니다.
매니페스트에서 줄을 읽고 해당 줄에 해당하는 경로 이름이 지정된 디렉터리에 있는지 확인하기 위해 테스트합니다.
파일에서 읽은 각 이름의 기본 이름을 테스트하고 다음을 사용하시겠습니까?
#!/bin/sh
manifest=$1
topdir=$2
while IFS= read -r name; do
pathname="$topdir/$( basename "$name" )"
if [ -e "$pathname" ]; then
printf 'Found: %s\n' "$pathname" >&2
else
printf 'Not found: %s\n' "$pathname" >&2
fi
done <"$manifest"
관련된: