【发布时间】:2018-01-16 00:06:10
【问题描述】:
我有一个很大的目录列表,每个目录都包含不同数量的“配对”文件。通过配对,我的意思是两个文件的前缀相同,并且这些对表示为“a”和“b”。前缀也不遵循定义的模式。我更广泛的意图是编写一个 bash 脚本,该脚本将列出给定目录中的所有子目录,cd 进入每个目录,找到文件对,并在这些文件对上执行一个函数。这是一个示例目录:
Dir1
123_a.txt
234_a.txt
123_b.txt
234_b.txt
Dir2
345_a.txt
345_b.txt
Dir3
456_a.txt
567_a.txt
678_a.txt
456_b.txt
567_b.txt
678_b.txt
我可以使用这段代码循环思考每个目录:
for d in ./*/ ; do (cd "$d" && script.sh); done
在 script.sh 中,我一直在编写一个脚本来查找所有文件对(这是我正在努力解决的问题),然后调用我想要应用于这些文件的函数。这是我一直在尝试的要点:
for file in ./*_a.txt; do (find the paired file with *_b.txt && run_function.sh); done
我将问题分解为需要获取 _a.txt 文件的“*”值,然后使用该值在目录中搜索匹配的 _b.txt 后缀,并创建一个可以将它们放入的子目录所以我可以应用run_function.sh。所以 Dir1 将包含子目录 123 和 234。
如果这没有意义,请告诉我。我正在努力解决的部分问题是匹配没有定义前缀的文件。
感谢您的帮助。
【问题讨论】: