gpt4 book ai didi

bash - 在 bash 脚本中从具有相同文件名的不同文件夹加载多个文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:09:46 26 4
gpt4 key购买 nike

到目前为止,我可以使用以下方法从我的 Ubuntu 上的单个文件夹中读取文件:

for i in /path/to/files/Folder1/*.pcd 
do
if [ ! -z $last_i ]
then
./vapp $last_i $i
fi
last_i="$i"
done

这将读取 Folder1 中的所有文件。我还有文件夹 2 和 3(即 Folder2、Folder3)。每个文件夹内有几个 100 个文件,这些文件只是简单地编号,例如 0000.pcd、0001.pcd ... 0129.pcd... 等等。

我试过用

/path/to/files/Folder{1..3}/*.pcd 

问题是它现在从一个文件夹中获取所有文件并处理其中的两个文件,而不是在移动到下一个文件夹之前以相同的方式遍历该文件夹中的所有文件。

我真正想要的是从我的三个文件夹中的每一个中取出第 i 个文件名,例如000i.pcd 并将其(包括路径)传递给我的应用程序以进行一些计算。

实际上我想这样做:

./vapp /Folder1/000i.pcd /Folder2/000i.pcd /Folder3/000i.pcd

最佳答案

单独使用 native bash 功能及其扩展的 glob 功能。从 /path/to/files/

运行脚本
#!/bin/bash

shopt -s globstar nullglob dotglob

i=0
end=129
while [ "$i" -le "$end" ]
do

# Generating the file-name to be generated, the numbers 0-129
# with 4 character padding, taken care by printf

file="$(printf "%04d.pcd" $i)"

# The ** pattern enabled by globstar matches 0 or more directories,
# allowing the pattern to match to an arbitrary depth in the current
# directory.

fileList=( **/"$file" )

# Remember to un-comment the below line and see if the required files
# are seen by doing
# printf "%s\n" "${fileList[@]}"
# and run the executable below

./vapp "$(printf "%s " "${fileList[@]}")"

done

extglob 特性的使用从这个 wonderful answer 中被重新使用.

关于bash - 在 bash 脚本中从具有相同文件名的不同文件夹加载多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41673132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com