遍历路径文件的 Bash 脚本

时间:2021-03-01 22:17:26

标签: bash shell scripting

我有这个文件夹架构

folder
   folder 1 (1)/
       /file1_1.txt
       /file2_2.txt
   folder 2 (2)/
       /file2_1.txt
...
   folder N (N)/
       /fileN_1.txt
       /fileN_2.txt

用一个脚本,我想遍历第一级的所有文件夹(文件夹1、文件夹2、文件夹3)并对每个.txt文件进行操作。

我尝试了什么:

folder=$1
length=$(expr length "$folder")

for subfolder in $folder/*;
do
    subfoldername=${subfolder:$length+1}
    for h in $subfolder/*;
    do
    echo "h is: "$h
    done
done

echo $h 显示:

h is: bdcntest/folder
h is: 1
h is: (1)/*
h is: bdcntest/folder
h is: 2
h is: (2)/*

循环“for h in $subfolder/*;”接缝将 $subfolder 解释为字符串而不是路径。 我认为文件夹名称中的空格可能是问题所在,但我还没有找到解决方案。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您好,欢迎来到 Stack Overflow!

如果我正确理解你的问题,你想要这样的东西吗?

find folder/ -name "*.txt" -maxdepth 1 -type f -exec cat {} \;

显然,可以将 "cat" 更改为任何其他命令,此命令(或程序)将对目录 *.txt 中的 "folder/" 文件进行“操作”,最大深度为 1。

folder 显然也可以,更改为另一个文件夹。