我有 139 個目錄,其中包含一個子目錄和需要移動到子目錄中的檔案。我認為最簡單的方法是使用 mv 命令根據檔案擴展名遞回移動檔案,其中只有兩個。我有這樣的事情:
xxx_03_001
- xxx_03_001/xxx_03_001.csv
- xxx_03_001/xxx_03_001.jpg
- xxx_03_001/submissionDocumentation
xxx_03_002
- xxx_03_002/xxx_03_002.csv
- xxx_03_002/xxx_03_002.jpg
- xxx_03_002/submissionDocumentation
我想要:
xxx_03_001
- xxx_03_001/submissionDocumentation/xxx_03_001.csv
- xxx_03_001/submissionDocumentation/xxx_03_001.jpg
xxx_03_002
- xxx_03_002/submissionDocumentation/xxx_03_002.csv
- xxx_03_002/submissionDocumentation/xxx_03_002.jpg
如何將這些檔案遞回移動到每個父目錄中的 submitDocumentation 子目錄中?
uj5u.com熱心網友回復:
在頂級目錄中運行它:
for dir in xxx_*; do
mv "$dir"/*.{csv,jpg} "$dir"/submissionDocumentation/
done
uj5u.com熱心網友回復:
在頂層:
find . -mindepth 1 -maxdepth 1 -type d | while read dir
do
[ -d "${dir}/submissionDocumentation/" ] && find ${dir} -mindepth 1 -maxdepth 1 -type f -exec mv {} ${dir}/submissinDocumentation/ \;
done
uj5u.com熱心網友回復:
使用 Perl 的獨立rename或prename命令:
rename -n 's|(.*)/.*/(.*)|$1/submissionDocumentation/$2|' xxx_*/xxx_*/*
輸出:
重命名(xxx_03_001/xxx_03_001/xxx_03_001.csv,xxx_03_001/submissionDocumentation/xxx_03_001.csv) 重命名(xxx_03_001/xxx_03_001/xxx_03_001.jpg, xxx_03_001/submissionDocumentation/xxx_03_001.jpg) 重命名(xxx_03_002/xxx_03_002/xxx_03_002.csv,xxx_03_002/submissionDocumentation/xxx_03_002.csv) 重命名(xxx_03_002/xxx_03_002/xxx_03_002.jpg, xxx_03_002/submissionDocumentation/xxx_03_002.jpg)
如果一切正常,請洗掉 option -n。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/359450.html
