Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
Linux 如何查找文件并在其上执行程序_Linux_Bash_Shell - Fatal编程技术网

Linux 如何查找文件并在其上执行程序

Linux 如何查找文件并在其上执行程序,linux,bash,shell,Linux,Bash,Shell,我试图在Linux中运行一个语法如下的程序: BET2 <input file> <output file> BET2 这个程序将拍摄一幅图像并对其进行一些预处理,然后保存到一个新文件中。现在我可以正确运行程序了。但是,我有大约100万张图像,我不想手动逐个运行它们。 所以,我的问题是,我有没有办法做到以下几点: 查找当前目录下的所有图像(.jpg文件) 让每个图像(something.jpg)成为预处理程序的输入,并用something_processed.jpg命

我试图在Linux中运行一个语法如下的程序:

BET2 <input file> <output file>
BET2
这个程序将拍摄一幅图像并对其进行一些预处理,然后保存到一个新文件中。现在我可以正确运行程序了。但是,我有大约100万张图像,我不想手动逐个运行它们。
所以,我的问题是,我有没有办法做到以下几点:

  • 查找当前目录下的所有图像(.jpg文件)
  • 让每个图像(something.jpg)成为预处理程序的输入,并用something_processed.jpg命名输出

  • 你可以用像这样的东西

     ls *.jpg | xargs -I{} BET2 {} processed_{}
    

    您可以通过执行类似于以下命令的命令来完成任务:

    cd "/path/to/the/folder/containing/your/images"
    for CURRENT_IMAGE in `find *.jpg -maxdepth 0`; do
      echo "Preprocessing image file $CURRENT_IMAGE"
      # Your program that performs the image preprocessing 
      BET2 "$CURRENT_IMAGE" "${CURRENT_IMAGE}_processed.jpg"
    done
    

    希望有帮助:)

    可能重复的、、等。您在哪里遇到问题?如果以这种方式生成的文件列表大于命令行中的最大文件数,则此操作将中断。此外,具有嵌入换行符的名称的文件也会导致问题。还应该注意的是,这只会在当前目录中查找文件。也许这是,也许这不是OP想要的。他写的(有点不清楚)“在当前目录下”,而不是“在当前目录下”,我理解这是指“当前目录下的某个子目录”。