复制shell脚本中除一个文件以外的所有文件

时间:2011-11-06 12:52:53

标签: shell

我是shell脚本的新手。

我有一个命令可以将当前所有tml/xml个文件直接复制到另一个文件,如下所示:

cp -f *.[tx]ml $path

但是我需要在执行上述命令时排除一个文件(excludeme.xml) 我尝试了下面的命令,但没有用。

find . -name "excludeme.xml" | xargs -0 -I {} cp -f *.[tx]ml $path

3 个答案:

答案 0 :(得分:2)

尝试:

find . ! -name excludeme.xml | ...

ls *.[tx]ml | while read -r file; do 
    test x"$file" = xexcludeme.xml || cp -f "$file" "$path"
done

注意领先的'x';在现代贝壳中可能没有必要,但会 当文件名以“ - ”开头时防止错误。

答案 1 :(得分:2)

如果是bash那么

shopt -s extglob
cp !(excludeme).[tx]ml destination 

答案 2 :(得分:0)

ls *.[tx]ml | grep -v excludeme.xml | xargs cp -f -t $path