2016-06-29 120 views
1

我正試圖移動我的LOG文件夾。這是我到目前爲止。使用FIND,GREP,XARGS和AWK查找文件夾和MV(重命名)它們?

cd archive 
find .. -type d -name 'LOGS' | xargs -I '{}' mv {} `echo {} | awk -F/ 'NF > 1 { print $(NF - 1)"-LOGS"; }'` 

不幸的是 - >echo {} | awk -F/ 'NF > 1 { print $(NF - 1)"-LOGS"; }' < - 立即評估。所以不給我我喜歡的文件名。

mv ../app1/LOGS app1-LOGS 
mv ../app2/LOGS app2-LOGS 

有沒有辦法在單行中做到這一點?

回答

0

使用xargs的:

find .. -type d -name 'LOGS' | 
xargs -I {} bash -c 'd="${1%/*}"; mv "$1" "${d##*/}-LOGS"' - {} 

要不然你可以做,像這樣使用進程替換:

cd archive 

while IFS= read -rd '' dir; do 
    d="${dir%/*}" 
    d="${d##*/}" 
    mv "$dir" "$d-LOGS" 
done < <(find .. -type d -name 'LOGS' -print0) 
相關問題