使用两个不同目录中的文件名进行检查(Unix)

使用两个不同目录中的文件名进行检查(Unix),unix,Unix,假设我有两个不同的目录/root/dir1和/root/dir2。 Dir1有一些扩展名为.xls的文件。我必须将dir1中的文件名(带.xls ext)与dir2中的文件名(.xls ext)进行比较,如果匹配,则将相应的文件移动到dir3;如果不匹配,则将文件移动到dir2。 请帮助我使用unix中的脚本。例如: for f in $(comm -1 -2 <(ls dir1) <(ls dir2)); do cp dir1/$f dir3/; done for f in $(c

假设我有两个不同的目录/root/dir1和/root/dir2。 Dir1有一些扩展名为.xls的文件。我必须将dir1中的文件名(带.xls ext)与dir2中的文件名(.xls ext)进行比较,如果匹配,则将相应的文件移动到dir3;如果不匹配,则将文件移动到dir2。 请帮助我使用unix中的脚本。

例如:

for f in $(comm -1 -2 <(ls dir1) <(ls dir2)); do cp dir1/$f dir3/; done
for f in $(comm -2 -3 <(ls dir1) <(ls dir2)); do cp dir1/$f dir2/; done
以美元计价的f(comm-1-2试用:

for file in /dir1/*.xls
do
   if [ -f /dir2/$file ]
   then
       mv $file $dir3
   else
       mv $file $dir2
    fi
done

从一个简单的谷歌上看这里。嗨,它为我工作。谢谢。如果“dir1”中没有xml文件,你能建议如何将它登录到一个文件中。因为它会抛出一个dir不存在的错误。你应该能够做到:
如果[-f dir1/*.xls];然后
…(命令)
;fi