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/