如何在linux中将文件作为参数传递并从文件系统获取其中所有文件的列表?

如何在linux中将文件作为参数传递并从文件系统获取其中所有文件的列表?

假设我有一个按名称命名的文件,searchfiles.txt其中包含文件名:

2345098.txt
2345099.txt
2345100.txt

等等(100 个文件条目)

searchfiles.txt现在我想通过传递上面的 ( ) 作为输入/参数来列出或显示与文件系统文件匹配的所有文件名。

我怎样才能在 Linux 中实现这一点?

答案1

while read -r file;do [ -f "$file" ] && echo "$file";done <searchfiles.txt

答案2

locate命令呢?

#!/bin/bash
cat list | while read line; do
locate $line;
done

另外,您需要记住在updatedb运行locate.

详情来自man

描述locate读取由updatedb(8)准备的一个或多个数据库,并将至少与其中一个模式匹配的文件名写入标准输出,每行一个

答案3

如果在同一目录中查找或者在 中给出了完整路径searchFiles.txt,您可以尝试此操作

ls `cat searchfiles.txt` 2> /dev/null

它将要求ls列出与searchfiles.txt.

ls只会列出那些确实存在的文件,并为那些丢失的文件发出消息。将错误重定向到/dev/null将确保不会打印丢失文件的错误消息。

答案4

假设文件名中没有特殊字符,您可以使用lscomm

ls | comm -1 -2 - searchfiles.txt

然而,请注意这本质上是脆弱的——在生产脚本中使用它。

看:

相关内容