Linux
如何根據文本文件中的名稱將文件移動到新目錄?
我
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
看起來我缺少文本文件中的列。有什麼幫助嗎?
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
列)
回答我自己的問題
在目錄“df”中,我給出了以下命令。它奏效了。
cat move.txt | xargs mv -t destination/