如何在Bash中检查文件每一行上的所有路径是否有效?
我有一个文件,每行有不同的路径如何在Bash中检查文件每一行上的所有路径是否有效?,bash,unix,Bash,Unix,我有一个文件,每行有不同的路径 path_1 path_2 ... 等等 我需要检查这些路径是否都是有效的 我现在的做法是创建一个新目录(tmp),然后写入 while read line; do cp $line > tmp; done < my_paths_file 读行时;做cp$line>tmp;完成有效的.file文件;完成
path_1
path_2
...
等等
我需要检查这些路径是否都是有效的
我现在的做法是创建一个新目录(tmp),然后写入
while read line; do cp $line > tmp; done < my_paths_file
读行时;做cp$line>tmp;完成<我的路径\u文件
然后检查复制到tmp目录中的文件数是否等于文件中的行数。由于我的文件中有很多行,这需要花费太长的时间
是否有一种更智能、更快速的方法来检查所有路径的有效性?阅读
人工测试
,了解
while read -r line; do
test -d "$line" || echo "$line is not valid"
done < my_paths_file
读取-r行时;做
测试-d“$line”| | echo“$line无效”
完成<我的路径\u文件
我对目录使用了-d
,对常规文件使用-f
,对文件和目录使用-e
。尝试以下代码:
touch valid.file
while read line; do ls $line >> valid.file; done < my_paths_file
touch valid.file
读行时;不要使用ls$line>>有效的.file文件;完成<我的路径\u文件
所有有效文件名将存储在
valid.file
中 “路径”如目录或文件?@dawg到文件您可以执行[-e path\u to\u file]]
来测试Bash中是否存在文件。使用ls“$line”
避免像/tmp/dumby dir这样带有空格的目录出现问题。