Awk
將帶有父文件夾的文件複製到新目錄
我想複製一些文件並在此過程中包含它們的父目錄。
目前的結構類似於:
/Module1/A/downloads/m13312/file.pdf /Module1/A/downloads/m17312/file.pdf /Module1/B/downloads/m18312/file.pdf /Module2/A/downloads/m19312/file.pdf
我想抓住路徑的最後兩部分,以便最終得到:
/mydir/m13312/file.pdf /mydir/m17312/file.pdf /mydir/m18312/file.pdf /mydir/m19312/file.pdf
我嘗試使用
cut
並awk
獲得正確的結果,但我似乎無法獲得正確返回的路徑。這是一個僅回應我需要的範例(我還沒有到複製部分):find . -type 'f' -path '*downloads*' -print0 | xargs -0 -I {} echo `cut -d/ -f4-5 <<<{}`
這只是列印出整個路徑,所以我知道我還不能使用它。
如果您
pax
支持該-0
選項:find . -type 'f' -path '*downloads*' -print0 | pax -rw0s'|.*downloads/||' /mydir
這應該這樣做:
for file in /Module*/*/downloads/m13312/file.pdf do file_directory="/mydir/$(basename "$(dirname "$file")")" mkdir -p "$file_directory" cp "$file" "$file_directory" done