텍스트 파일의 이름을 기반으로 파일을 새 디렉터리로 이동하는 방법은 무엇입니까?

텍스트 파일의 이름을 기반으로 파일을 새 디렉터리로 이동하는 방법은 무엇입니까?

tar.gz내 디렉토리에 다음 파일이 있습니다 df.

A.tar.gz
B.tar.gz
C.tar.gz
D.tar.gz
E.tar.gz
F.tar.gz
G.tar.gz

move.txt다음 열 정보가 포함된 텍스트 파일도 있습니다.

ID  Status      Status2     Status3     Status4     Status5         tar   sample
ID1 Negative    Negative    Negative    Negative    Negative    D.tar.gz    Sam1
ID2 Negative    Negative    Negative    Negative    Negative    A.tar.gz    Sam2
ID3 Negative    Negative    Negative    Negative    Negative    C.tar.gz    Sam3
ID4 Negative    Negative    Negative    Negative    Negative    F.tar.gz    Sam4

df파일의 일치 항목을 기반으로 한 move.txt디렉터리의 파일을 다른 디렉터리로 이동하고 싶습니다.

나는 성공하지 못한 채 이 접근법을 시도했습니다.

for file in $(cat move.txt)
do 
    mv "$file" ~/destination 
done

~/destination출력은 다음 디렉터리에 있어야 합니다 .

D.tar.gz
A.tar.gz
C.tar.gz
F.tar.gz

텍스트 파일에 열이 누락된 것 같습니다. 도움이 필요하세요?

답변1

bash+awk해결책:

for f in $(awk 'NR > 1{ print $7 }' move.txt); do 
    [[ -f "$f" ]] && mv "$f" ~/destination
done

또는 다음을 사용하여 xargs:

awk 'NR > 1{ print $7 }' move.txt | xargs -I {} echo mv {} ~/destination

주요 awk작업은 다음을 의미합니다.

  • NR > 1- 두 번째 줄부터 처리를 시작합니다(첫 번째 줄은 건너뛰기 때문에머리글)
  • print $7- 7번째 필드 값 $7( tar열) 을 출력합니다.

답변2

내 질문에 답해 보세요.

"df" 디렉터리 내에서 다음 명령을 내렸습니다. 효과가 있었습니다.

cat move.txt | xargs mv -t destination/

관련 정보