Command-Line
將具有相同名稱但在不同目錄中的文件複製到新目錄中,同時重命名它們
我有以下目錄結構:
top_dir |________AA |_______f1.json |_______f2.json |________BB |_______f1.json |_______f2.json |________CC |_______f1.json |_______f2.json
我想編寫一個腳本/命令行命令來獲得以下結構
new_dir |_______f1_AA.json |_______f2_AA.json |_______f1_BB.json |_______f2_BB.json |_______f1_CC.json |_______f2_CC.json
我嘗試閱讀一些用於重命名文件和複製移動文件的解決方案。但是,我還不能解決這個問題。謝謝!
使用循環:
mkdir /path_to/new_dir cd /path_to/top_dir for i in */*.json; do cp "$i" "/path_to/new_dir/$(basename "$i" .json)_$(dirname "$i").json" done
$(basename "$i" .json)
列印不帶後綴的文件名,例如f1
$(dirname "$i")
列印目錄名稱,例如AA
使用 Larry Wall (在 Debian/Ubuntu 和RHEL/Centos 上
perl-rename
又名):rename``prename
perl-rename -n 's:([^/]+)/(.+).json:path/to/new/dir/$2_$1.json:' */*.json
替換
-n
為-v
實際執行。