Ubuntu CLI Mass Find CP

时间:2012-05-24 18:58:09

标签: ubuntu find command-line-interface cp

find /www/ -iname ".htaccess" -exec cp {} {}_cp \;

将复制所有.htaccess文件并将它们重命名为.htaccess_cp但我想要做的是复制网站上的所有.htaccess文件并将它们放在一个目录中。问题是他们都需要有一个不同的名字,否则他们只会覆盖彼此。理想情况下,我希望他们拥有父目录的文件名。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分: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' -- {} \;

答案 1 :(得分:0)

也许是这样的:

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