Linux
特殊“複製和重命名”案例
我有一個深度嵌套的文件夾結構,其中有數百個名為
data.log
.data.log
我需要一個腳本來根據它們所在的父文件夾的名稱重命名每個文件,然後將重命名的文件移動到定義的目標文件夾。原始data.log
文件應保留在原處。例子:
該文件
/opt/slm/data/system/amd-823723/data.log
需要重命名為amd-823723
,然後移動到/opt/slm/output/
,從而原始data.log
文件保留在原位。
#!/bin/bash OUTDIR=/opt/slm/output/ find /opt/slm/data -name data.log | while read FILE; do OUTFILE="$(basename "$(dirname "$FILE")")" cp -p "$FILE" "$OUTDIR$OUTFILE" done
與
zsh
:autoload zmv # best in ~/.zshrc zmv -n -C '**/(*)/data.log' '/opt/slm/output/$1'
-n
如果滿意,請刪除(用於試執行)。這
-C
是用於複製(與重命名/相對mv
),即使您的描述說rename,看起來您想將文件複製到output
目錄中。