2016-06-29 17 views
1

Ich versuche meine LOG-Ordner zu verschieben. Hier ist was ich bisher habe.FIND Ordner und MV (umbenennen) sie mit FIND, GREP, XARGS und AWK?

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

Leider ->echo {} | awk -F/ 'NF > 1 { print $(NF - 1)"-LOGS"; }' < - wertet sofort. Also gibt mir nicht den Dateinamen, den ich bevorzugen würde.

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

Gibt es eine Möglichkeit, dies in einer einzigen Zeile zu tun?

Antwort

0

Verwendung xargs:

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

Oder sonst können Sie, dass wie diese mit Hilfe von Prozess Substitution tun:

cd archive 

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