unix比较文件名列表

unix比较文件名列表,unix,while-loop,compare,sftp,exists,Unix,While Loop,Compare,Sftp,Exists,我相信类似的问题以前也曾得到过回答。我找不到任何与我的特殊情况相匹配的,尽管我相信其他许多人都面临过这种情况 在Red Hat上的FTP会话中,我生成了当前驻留在服务器上的文件名列表。该列表包含文件名,仅包含文件名。将此文件称为1。也许它包含以下内容: 513569430_EDIP000754535900_MFC_20190618032554.txt blah.txt duh.txt loadFile.dat 513569430_EDIP000754535900_MFC_20190618032

我相信类似的问题以前也曾得到过回答。我找不到任何与我的特殊情况相匹配的,尽管我相信其他许多人都面临过这种情况

在Red Hat上的FTP会话中,我生成了当前驻留在服务器上的文件名列表。该列表包含文件名,仅包含文件名。将此文件称为1。也许它包含以下内容:

513569430_EDIP000754535900_MFC_20190618032554.txt
blah.txt
duh.txt
loadFile.dat
513569430_EDIP000754535900_MFC_20190618032554.txt
localoutfile.log
然后我下载了这些文件,并生成了一个成功下载文件的列表。此外,此列表包含文件名,仅包含文件名。将此文件命名为2。也许它包含以下内容:

513569430_EDIP000754535900_MFC_20190618032554.txt
blah.txt
duh.txt
loadFile.dat
513569430_EDIP000754535900_MFC_20190618032554.txt
localoutfile.log
现在,我想遍历file1中的名称,并检查它们是否存在于file2中。如果存在,我将返回FTP服务器并从服务器上删除该文件

我看过while循环、comm和test命令,但我似乎无法破解代码。我希望有很多方法来完成这项任务。有什么建议或工作参考吗


我的问题不是循环本身,而是比较两个文件之间的内容

谢谢你的建议@jhnc

在进行了一些深入的思考和交谈之后,我意识到我甚至不需要做这种比较。下载文件后,我只需要生成成功下载的列表。然后我可以根据成功下载的列表从服务器上删除


但是,我仍然有兴趣知道如何与
'\r\n'
'\n'
行结束情况进行比较

谢谢@jhnc的建议

在进行了一些深入的思考和交谈之后,我意识到我甚至不需要做这种比较。下载文件后,我只需要生成成功下载的列表。然后我可以根据成功下载的列表从服务器上删除


但是,我仍然有兴趣知道如何与
'\r\n'
'\n'
行结束情况进行比较

comm-1-2 file1 file2只返回两个文件中相同的行。这可以用作
sftp
的批处理命令文件的基础

从对问题的评论来看,两个文件的行尾似乎有所不同。这可以通过多种方式解决,最简单的方法可能是使用
tr
comm
-
理解为一个文件名,意思是“从标准输入读取”

例如:

tr -d '\r` file1 | comm -1 -2 - file2
如果未对文件1或文件2进行排序,则必须更正此问题,以便
comm
正常运行。对于bash,这可能是:

comm -1 -2 <( sort file1 | tr -d '\r' ) <( sort file2 )

comm-1-2
comm-1-2 file1 file2
只返回两个文件中相同的行。这可以用作
sftp
的批处理命令文件的基础

从对问题的评论来看,两个文件的行尾似乎有所不同。这可以通过多种方式解决,最简单的方法可能是使用
tr
comm
-
理解为一个文件名,意思是“从标准输入读取”

例如:

tr -d '\r` file1 | comm -1 -2 - file2
如果未对文件1或文件2进行排序,则必须更正此问题,以便
comm
正常运行。对于bash,这可能是:

comm -1 -2 <( sort file1 | tr -d '\r' ) <( sort file2 )

comm-1-2
sort file1 file1 file2 | uniq-c | sed'/^*3/!Ds//;s/[^A-Za-z0-9]/\\\&/g;s/^/rm/'>sftp批处理cmds
bash:
comm-1-2 By all accounts'comm-12 file1 file2'应为我提供匹配的1记录,但它不返回任何内容。可能是行尾(
\r\n
vs
\n
vs
\r
)差异。尝试使用
grep 513569430_EDIP000754535900_MFC_20190618032554文件查看od-c
右侧打开。文件1以\r\n结尾,文件2仅以\r\n结尾。有没有关于处理这个问题的热门技巧?
sortfile1file1file2 | uniq-c | sed'/^*3/!Ds//;s/[^A-Za-z0-9]/\\\&/g;s/^/rm/'>sftp批处理cmds
bash:
comm-1-2 By all accounts'comm-12 file1 file2'应为我提供匹配的1记录,但它不返回任何内容。可能是行尾(
\r\n
vs
\n
vs
\r
)差异。尝试使用
grep 513569430_EDIP000754535900_MFC_20190618032554文件查看od-c
右侧打开。文件1以\r\n结尾,文件2仅以\r\n结尾。处理这个问题有什么好办法吗?太好了。谢谢你的解释。太好了。谢谢你的解释。