使用相同的shell脚本删除文件

时间:2011-11-24 23:34:50

标签: bash shell

我是shell脚本的新手。 我需要在两个目录中比较文件名并删除具有相同名称的文件。

EG:

Directory1/
one
two
three
four

Directory2/
two
four
five

运行脚本后,目录将是:

Directory1/
one
three

Diretory2/
five

由于

2 个答案:

答案 0 :(得分:3)

test -f测试文件是否存在:

cd dir1
for file in *
do
    test -f ../dir2/$file && rm $file ../dir2/$file
done
cd ..

答案 1 :(得分:2)

又快又脏:

while read fname
do 
    rm -vf Directory{1,2}/"$fname"
done < <(sort 
              <(cd Directory1/ && ls) 
              <(cd Directory2/ && ls) | 
         uniq -d)

这假设有很多关于文件名的内容,但它应该会显示输入,以及类似的情况。

现在也进行了测试:

mkdir /tmp/stacko && cd /tmp/stacko
mkdir Directory{1,2}
touch Directory1/{one,two,three,four} Directory2/{two,four,five}

运行该命令显示:

removed `Directory1/four'
removed `Directory2/four'
removed `Directory1/two'
removed `Directory2/two'

结果树是:

Directory1/one
Directory1/three

Directory2/five