我试图创建一个从CVS中检索文件(包括子文件夹)并将它们存储到临时目录/ tmp / projectdir /(OK)中的脚本,然后从我的项目目录/ home中删除这些文件的副本/ projectdir /(不行),不触及项目目录中的任何其他文件或文件夹结构本身。
我一直尝试两种方法,但我遇到了两种问题。到目前为止,这是我的剧本:
#!/usr/bin/bash
cd /tmp/
echo "removing /tmp/projectdir/"
rm -rf /tmp/projectdir
# CVS login goes here, code redacted
# export files to /tmp/projectdir/dir_1/file_1 etc
cvs export -kv -r $1 projectdir
# method 1
for file in /tmp/projectdir/*
do
# check for zero-length string
if [-n "$file"]; then
echo "removing $file"
rm /home/projectdir/"$file"
fi
done
# method 2
find /tmp/projectdir/ -exec rm -i /home/projectdir/{} \;
这两种方法都没有按预期工作,因为我需要某种方式从文件名中删除/ tmp / projectdir /(用/ home / projectdir /替换)并防止它们执行rm / home / projectdir / dir_1(即目录而不是特定文件),但我不知道如何实现这一目标。
(如果有人想知道,在我意识到/ tmp / projectdir /也是字符串的一部分之前,零长度字符串位是试图避免rm&#39目录)
答案 0 :(得分:3)
您可以使用:
cd /tmp/projectdir/
find . -type f -exec rm -i /home/projectdir/{} \;