Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Sequential - Fatal编程技术网

如何使用Bash循环浏览一系列文件

如何使用Bash循环浏览一系列文件,bash,loops,sequential,Bash,Loops,Sequential,我正在尝试循环浏览一系列文件并修改它们。这些文件遵循一种模式,但我不能使用该模式,因为我不需要所有与模式匹配的文件,只需要那些在特定数字序列之间的文件 例如: for files in D70_3113.NEF...D70_3330.NEF;do exiftool -GPS...; done 如果要在数字列表中循环,可以使用大括号展开: for files in D70_{3113..3330}.NEF; do exiftool -GPS...; done 这取决于您对命名方案的期望。我不知

我正在尝试循环浏览一系列文件并修改它们。这些文件遵循一种模式,但我不能使用该模式,因为我不需要所有与模式匹配的文件,只需要那些在特定数字序列之间的文件

例如:

for files in D70_3113.NEF...D70_3330.NEF;do exiftool -GPS...; done

如果要在数字列表中循环,可以使用大括号展开:

for files in D70_{3113..3330}.NEF; do exiftool -GPS...; done

这取决于您对命名方案的期望。我不知道你的文件是否可以从

D70_3113.NEF to D79_9999.NEF

或者你做了什么。假设是后者,您可以:

for files in D70_3[0-9][0-9][0-9].NEF; do exiftool -GPS...; done
…让shell的模式匹配为您完成这项工作


警告:如果文件太多,“for”命令行可能太长。在这种情况下,您需要查找并将其输出导入“while”循环。但是今天的命令行可以运行很长时间。。。超过100000个字符。请参见

但这似乎将包括不应包括的D70_3000.NEF,也不应包括D70_3331.NEF或更高。是的,你是对的。通常我更喜欢进行模式匹配,因为它只返回找到的文件名。那我就不必做任何额外的检查了。但在这里,汤姆的答案正是你想要的。但是您应该小心,因为它将返回一组字符串,如果您不能保证文件名序列中没有间隙,那么在尝试读取不存在的文件时可能会出现错误。如果您需要的话,对his for循环中是否存在的简单测试将为您提供额外的安全措施。
for files in D70_3[0-9][0-9][0-9].NEF; do exiftool -GPS...; done