我的要求是
localfolder=green.txt,yellow.txt,blue.txt
remotefolder=green_202105050333.txt,yellow_202105050333.txt,blue_202105050333.txt
我想将两个文件夹比较为IF[[localfolder==remotefolder]]例如:green.txt=green_202105050333.txt(此处条件将始终显示每个文件的第一个字符或消除数据和时间(然后将结果显示为"0";匹配的";
请帮我把逻辑搞清楚。提前感谢!!
您可以执行下一步操作,为每个目录(文件夹(创建一个文件,例如,如果您使用ls:
# in local directory
ls localfolder > localFolder.txt
# in some remote directory
ls remoteFolder > remoteFolder.txt
我们可以假设文件是下一个:
localFolder.txt:
green.txt
yellow.txt
blue.txt
remoteFolder.txt:
green_202105050333.txt
yellow_202105050333.txt
blue_202105050333.txt
gray_202105050333.txt
现在将文件放在同一目录中并执行下一个:
sed -r 's/.[a-z]+//g' localFolder.txt | xargs -I{} grep {} remoteFolder.txt | sed -r 's/_[0-9]+//g'
输出为:
green.txt
yellow.txt
blue.txt
现在,如果你想在脚本中完成,那么创建一个文件,例如myScript.sh,内容必须是:
#!/bin/bash
sed -r 's/.[a-z]+//g' $1 | xargs -I{} grep {} $2 | sed -r 's/_[0-9]+//g'
授予脚本执行权限:
chmod +x myScript.sh
并像下一个一样执行:
./diff.sh localFolder.txt remoteFolder.txt
你会得到同样的结果。
这个脚本只适用于你的情况,这是一个解释的每个部分做什么
# Remove .txt or any extensions for each line in localFolder
sed -r 's/.[a-z]+//g' localFolder.txt
# The ouput of each line is received by grep and search in remoteFolder
| xargs -I{} grep {} remoteFolder.txt
# Remove the datetime
| sed -r 's/_[0-9]+//g'