입력 파일에서 파일 이름을 읽고 다른 위치에 복사하는 방법

입력 파일에서 파일 이름을 읽고 다른 위치에 복사하는 방법

2개의 다른 입력 파일이 있습니다.

파일 A:

1.dat
2.dat
3.dat

파일 B:

4.dat
5.dat
5.dat

이제 파일 A에서 모든 dat 파일을 찾은 다음 파일 B에서 모든 dat 파일을 찾고 복사하고 싶습니다 $LOCATION/.$FILE_A_PATH$LOCATION/$FILE_B_PATH

이것을 달성하도록 도와주세요

답변1

GNU xargs및 GNU의 경우 cp다음과 같을 수 있습니다.

(
  cd -P -- "$LOCATION" &&
    xargs -rd '\n' cp -t "$FILE_A_LOCATION" --
) < 'File A'

에 대해서도 마찬가지입니다 File B.

dat의 하위 디렉터리에서 이러한 파일을 찾고 있으며 $LOCATION셸을 사용하여 그 중 하나(예: 최신 파일)를 복사 하려는 경우 :$FILE_A_LOCATIONzsh

autoload zargs
cp_from_file() (
  file=$1 dest=$2
  files=( ${(f)"$(<$file)"} )
  newests=( $LOCATION/**/$^files(ND.om[1]) )
  zargs -r -- $newests -- cp -t $dest --
)
cp_from_file 'File A' $FILE_A_LOCATION
cp_from_file 'File B' $FILE_B_LOCATION

관련 정보