我在一個目錄 (/int/source/HR100) 中有一個串列檔案和一個源檔案。所以 Source 目錄的內容如下所示。
Customer_Account_20211202.csv
Customer_Account.lst
串列檔案 (Customer_Account.lst) 包含源檔案的名稱,即 Customer_Account_20211202.csv。現在我想壓縮源檔案并將其移動到目標目錄 (/int/source/HR100/Archive)。我能夠使用如下所示的單行 unix 命令實作移動,但我無法壓縮和移動檔案。我的偏好是 Gunzip(.gz) 格式。請幫忙。
我正在使用的代碼:
xargs -a Customer_Account.lst mv -t int/source/HR100/Archive;
上面的一個 liner 在不壓縮的情況下移動檔案。我想要一個從 list 讀取檔案,壓縮然后移動的襯墊。
uj5u.com熱心網友回復:
為什么是單班輪?怎么樣...(未測驗)
while IFS= read -r file || [ -n "$file" ]; do
printf '%s\n' "Doing file '$file'"
tar -czf "$file.tar.gz" "$file"
mv -- -t 'int/source/HR100/Archive' "$file.tar.gz"
done < 'Customer_Account.lst'
while ... do ... done回圈中的第一行逐行讀取檔案
- 有關問題,請參閱此
[ -n "$file" ]
uj5u.com熱心網友回復:
您可以使用xargs和sh來執行多個命令。
xargs -a Customer_Account.lst -i sh -c "gzip {};mv {}.gz -t int/source/HR100/Archive;"
uj5u.com熱心網友回復:
假設 Customer_Account.lst 只包含一行,這個命令應該可以完成這項作業:
f=$(< Customer_Account.lst); gzip "$f" && mv "$f".gz int/source/HR100/Archive/
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/387053.html
