bash 用于删除与另一个目录中的文件匹配的文件的脚本
bash script to remove files matching those in another directory
我正在尝试创建一个脚本,用于从 CVS 检索文件(包括子文件夹)并将它们存储到临时目录 /tmp/projectdir/(确定),然后从我的项目目录中删除这些文件的副本 /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 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 (即目录而不是特定文件),但我不确定如何实现这一点。
(如果有人想知道,零长度字符串位是为了避免 rm'ing 目录,在我意识到 /tmp/projectdir/ 也是字符串的一部分之前)
您可以使用:
cd /tmp/projectdir/
find . -type f -exec rm -i /home/projectdir/{} \;
我正在尝试创建一个脚本,用于从 CVS 检索文件(包括子文件夹)并将它们存储到临时目录 /tmp/projectdir/(确定),然后从我的项目目录中删除这些文件的副本 /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 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 (即目录而不是特定文件),但我不确定如何实现这一点。
(如果有人想知道,零长度字符串位是为了避免 rm'ing 目录,在我意识到 /tmp/projectdir/ 也是字符串的一部分之前)
您可以使用:
cd /tmp/projectdir/
find . -type f -exec rm -i /home/projectdir/{} \;