【发布时间】:2021-05-31 11:17:41
【问题描述】:
我有这个文件夹架构
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
通过脚本,我想遍历第一级的所有文件夹(folder1、folder2、folder3)并对每个.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
回显 $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 解释为字符串而不是路径。 我认为也许文件夹名称中的空格可能是问题所在,但我还没有设法得到解决方案。
有什么想法吗?
【问题讨论】:
-
使用类似的东西:
for f in folder*/*.txt; do echo "$f"; done。请勿在此作业中使用find。那是矫枉过正。必要时不要忘记引用变量。 -
他想操作/进入文件夹的第一层 - 还是我错了?
-
我准确地说“操作”是什么意思:我在这个不同的文件夹中还有很多其他类型的文件。我想复制第一级的所有文件夹(文件夹 1、文件夹 2、文件夹 3)以及每个 readme.txt 和此文件夹中存在的不同 .pdf 文件。每个文件夹中只有这个文件,而不是所有其他文件(如 avi 或 mp3)。我当然想保留这个目录结构。 readme.txt 和 .pdf 总是在第一个目录中,而不是在子目录中。此外,我认为使用 find 命令 (?) 可能很难完成所有这些操作。这就是我使用 bash 命令的原因。