2016-06-29 2 views
1

내 LOG 폴더를 이동하려고합니다. 여기까지 내가 지금까지 가지고있는 것이있다.FIND 폴더 및 MV (이름 바꾸기) FIND, GREP, XARGS 및 AWK를 사용하여 폴더를 찾으시겠습니까?

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) 
관련 문제