linux - 要检查是否存在的文件列表

标签 linux shell

我有一大堆文件,我需要检查它们是否在我的 Linux 服务器上。其中有些可能是,有些可能不是。

是否有命令行工具可以执行此操作?

或者我必须求助于在 shell 脚本中循环查找吗?

最佳答案

还有另一种选择,它依赖于使用查找。这个想法是运行一次查找,保存所有文件名,然后将它们与文件列表进行比较。

首先,文件列表必须排序:让我们调用 sortedFiles.txt

运行

 find / -type f | xargs -n1 -I@ basename '@' | sort -u > /tmp/foundFiles.txt

现在比较它们,只打印第一个文件中的那些,而不打印第二个文件中的那些

 comm -23 /tmp/sortedFiles.txt /tmp/foundFiles.txt

这会告诉你那些不在电脑里的。

如果您想要计算机中的那些,请使用:

 comm -12 /tmp/sortedFiles.txt /tmp/foundFiles.txt

这将告诉您计算机中的那些。缺点是你不知道他们在哪里。 :)

或者运行查找:

find / -type f > /tmp/allFiles.txt

然后使用 grep 进行迭代,确保匹配上一行的末尾/

 cat /tmp/filesToFind.txt | xargs -n1 -I@ egrep '/@$' /tmp/allFiles.txt

这将仅打印找到的文件的位置,但不会打印未找到的文件。

--伤害

关于linux - 要检查是否存在的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16296805/

相关文章:

arrays - 如何使用 jq 将字符串数组转换为对象?

linux - 如何在信号处理程序中更改 FPU 上下文 (C++/Linux)

linux - qmake 在 linux 上使用不正确的 Qt 安装路径

linux - 以编程方式获取链接速度?

linux - ElasticSearch 中的超时更改不起作用

linux - 如何提取由多行星号分隔的文件的特定部分?

android - Linux下连接Nexus S到Eclipse

linux - 使用linux命令发送电子邮件

linux - 在 Bash 中通过正则表达式从字符串中删除后缀?

linux - 如果使用 nohup 运行,脚本命令不会等待子进程