2012-05-24 2 views
1
find /www/ -iname ".htaccess" -exec cp {} {}_cp \; 

htaccess로 모든 파일을 복사하여이 .htaccess_cp하지만 내가하고 싶은 것은 사이트에있는 .htaccess 파일을 모두 복사 한 디렉토리에 넣어되는 이름을 바꿀 것입니다 찾을 수 있습니다. 문제는 다른 이름을 사용해야한다는 것입니다. 그렇지 않으면 서로를 덮어 쓰게됩니다. 이상적으로는 부모 디렉토리의 파일 이름을 갖기를 바랍니다.우분투 CLI 질량 CP

도움을 주시면 감사하겠습니다.

답변

0

이 뭔가를 시도 할 수 있습니다 :

find /www -name '.htaccess' -exec bash -c 'newfile=${1}_cp; if [[ ! -e $newfile ]]; then 
    cp "$1" "$newfile" 
else 
    count=1 
    while true; do 
     if [[ ! -e ${1}_cp.$count ]]; do 
     cp "$1" "${1}_cp.$count" 
     break 
     else 
     ((count++)) 
     fi 
    done 
fi' -- {} \; 
+0

그게 유일한 문제는 30 개 사이트에 말과는 마지막에 증가 번호를 추가하지만 것입니다 거기에 다른 .htaccess 파일을 각각 어떤 .htaccess 파일을 어떤 사이트와 함께 갈지 모르겠다? – user1415813

0

아마 이런 식으로 뭔가 :

for file in $(find /www/ -iname ".htaccess"); do 
    new_file_name=$(echo $file | sed 's#/#_#g') 
    cp $file $new_file_name 
done 
+0

완벽하게 작동합니다. – user1415813