Linux

特殊“複製和重命名”案例

  • May 28, 2019

我有一個深度嵌套的文件夾結構,其中有數百個名為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目錄中。

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