编写一个shell脚本,如果一个目录中的C源文件在另一个目录的结构中,就删除它们。命令行的第一个参数是C源所在的目录,第二个参数是搜索开始的目录。
如果可能的话,我需要完整的代码,因为我写过这个,但对我的问题不起作用。
#!/bin/bash
if [ $# -ne 2 ]
then
echo "for execution complete the line of command: $0 dir1 dir2"
exit 1
else
if [ ! d ~/$2 ]
then
echo "write a directory in order to do the search"
exit 1
fi
fi
for fis in *.c
do
cat $fis
rm -i $fis
done
以上是我试过的方法
解决方案:
首先你需要得到所有文件的列表,存在于第二个目录中。这个列表应该保存在一个文件中。搜索可以这样做。
find <second_directory> -type f -name *.c >list_of_files.txt
然后你写一个循环,在第一个目录下进行检查 list_of_files.txt
,如果文件存在于那里(使用 grep
的文件名),将其删除。
由于你是在Linux下工作(没有回收站),我建议把要删除的文件名写到一个临时文件中,如果正确的话,只需在文件中添加一个新的文件名。rm
在它的前面。
本文来自投稿,不代表实战宝典立场,如若转载,请注明出处:https://www.shizhanbaodian.com/16112.html