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
- 2行目から処理を開始します(1行目はスキップするためヘッダー)print $7
- 7番目のフィールド値$7
(tar
列)を出力します。