Command-Line

將具有相同名稱但在不同目錄中的文件複製到新目錄中,同時重命名它們

  • February 21, 2020

我有以下目錄結構:

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實際執行。

引用自:https://unix.stackexchange.com/questions/569014