Bash 使用shell脚本删除具有相同属性的文件
我完全是shell脚本的新手。 Im需要比较两个目录中的文件名并删除同名文件 例如: 运行脚本后,目录将为:Bash 使用shell脚本删除具有相同属性的文件,bash,shell,Bash,Shell,我完全是shell脚本的新手。 Im需要比较两个目录中的文件名并删除同名文件 例如: 运行脚本后,目录将为: Directory1/ one three Diretory2/ five 谢谢,又快又脏: while read fname do rm -vf Directory{1,2}/"$fname" done < <(sort <(cd Directory1/ && ls) <(
Directory1/
one
three
Diretory2/
five
谢谢,又快又脏:
while read fname
do
rm -vf Directory{1,2}/"$fname"
done < <(sort
<(cd Directory1/ && ls)
<(cd Directory2/ && ls) |
uniq -d)
运行该命令显示:
删除了'Directory1/four'
删除“目录2/4”
删除“目录1/2”
删除“目录2/2”
生成的树是:
Directory1/one
目录1/3
目录2/5
测试-f
测试文件是否存在:
cd dir1
for file in *
do
test -f ../dir2/$file && rm $file ../dir2/$file
done
cd ..
我尝试了diff Directory1/Directory2/但它显示了每个目录中的单个文件,而不是重复的文件。您只需要删除同名文件吗?不同的文件可以有相同的名称。正确的方法是使用
cksum
或md5
来确定文件是否确实重复。只有相同的名称才合适。内容对我来说并不重要。thaks.why double-less-than被使用<<?
mkdir /tmp/stacko && cd /tmp/stacko
mkdir Directory{1,2}
touch Directory1/{one,two,three,four} Directory2/{two,four,five}
cd dir1
for file in *
do
test -f ../dir2/$file && rm $file ../dir2/$file
done
cd ..