Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Bash中检查文件每一行上的所有路径是否有效?_Bash_Unix - Fatal编程技术网

如何在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这样带有空格的目录出现问题。