파일 내용을 반복하여 다른 디렉터리에서 찾습니다.

파일 내용을 반복하여 다른 디렉터리에서 찾습니다.

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"

관련된:

관련 정보