我试图移动我的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
有没有办法在一行中完成这项工作?
答案 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)