按目录分支/叶子对文件进行分组
我是 bash 新手,在处理目录树结构时遇到困难。 我的目录结构如下
I/A/dataA.dat
I/B/dataB.dat
I/C/dataC.dat
II/A/dataA.dat
II/B/dataB.dat
II/C/dataC.dat
III/A/dataA.dat
III/B/dataB.dat
III/C/dataC.dat
我现在想要使用 I/B/dataB.dat
处理 I/A/dataA.dat
以及同样的 II/ A/dataA.dat
和 II/B/dataB.dat
等(对于每种情况)。但我不想用 II/B/dataB.dat
处理例如 I/A/dataA.dat
。
查找此类文件对的最佳方法是什么?
我希望将找到的文件对的名称传递给 bash 函数,如下所示,
function process_pair()
{
fileOne=$1; #for example II/A/data.dat
fileTwo=$2; #for example II/B/data.dat
//the rest of the function that processes this pair.
}
但我不知道如何获取变量 $1
和 $2
。
我目前正在使用 bash 并从 dirs=find $SOURCE -type d -links 2
命令开始(查找所有叶目录 - 改编自这个问题)。然后我尝试循环这些(使用子字符串命令来获取上面的目录)。 但是,我发现这很困难,我认为必须有更好的方法。
I am new to bash and am having difficulty processing directory tree structures.
I have a directory structure that is as follows
I/A/dataA.dat
I/B/dataB.dat
I/C/dataC.dat
II/A/dataA.dat
II/B/dataB.dat
II/C/dataC.dat
III/A/dataA.dat
III/B/dataB.dat
III/C/dataC.dat
I now want to process I/A/dataA.dat
with I/B/dataB.dat
and likewise II/A/dataA.dat
with II/B/dataB.dat
etc (for every case). But I do not want to process, for example, I/A/dataA.dat
with II/B/dataB.dat
.
What is the best way to find such pairs of files?
I wish to pass the names of the found pair to a bash function such as follows
function process_pair()
{
fileOne=$1; #for example II/A/data.dat
fileTwo=$2; #for example II/B/data.dat
//the rest of the function that processes this pair.
}
but I do not know how to get the variables $1
and $2
.
I am currently using bash and starting from the dirs=find $SOURCE -type d -links 2
command (to find all the leaf directories - adapted from this question). I am then trying to loop over these (using substring commands to obtain the directory above).
However, I am finding this difficult and I think there must be a better way.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 shell 中很容易完成:
Readily done in the shell: