我是bash脚本新手。该要求类似于BASH copy all files except one。我试图复制所有以file开头的文件,并排除一个以file~(备份文件)开头的文件。这是我迄今为止用bash尝试过的。
path1="/home/dir1/file*" ( I know this * doesn't work - wildcards)
file_to_exclude="/home/dir1/file~*"
dest=/var/dest
count=`ls -l "$path1" 2>/dev/null | wc -l`
if [ $count !=0 ]
then
cp -p !$file_to_exclude $path1 $dest (Not sure if this is the way to exclude backup file)
fi
有人可以帮我解决这个问题吗?
答案 0 :(得分:3)
使用find
find . -maxdepth 1 -type f -size +0 ! -name *~* -exec cp {} dest \;
而非行计数,此检查大小为非零。
dest是目标目录。
答案 1 :(得分:0)
尝试这样的事情:
file_to_exclude="some_pattern"
all_files=`ls /home/dir1/file*`
for file in $all_files; do
if [ "$file" != "$file_to_exclude" ]; then
cp $file /some/path
fi
done
答案 2 :(得分:0)
我没有看到引起并发症的原因,它可能很简单:
cp -p /home/dir1/file[^~]* /var/dest/
或者,如果您只想要带扩展名的文件
cp -p /home/dir1/file[^~]*.* /var/dest/