使用FIND,GREP,XARGS和AWK查找文件夹和MV(重命名)它们?

时间:2016-06-29 21:06:16

标签: bash awk grep find

我试图移动我的LOG文件夹。这是我到目前为止所拥有的。

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

有没有办法在一行中完成这项工作?

1 个答案:

答案 0 :(得分: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)