假设我有一个按名称命名的文件,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
将确保不会打印丢失文件的错误消息。