我需要一个bash命令,在目录“rawdata”中搜索名称以“AB”开头的所有子目录,在所有这些子目录中搜索子目录“demo”,并在所有“demo”目录中搜索名称仅由数字组成的所有子目录。从所有这些中,我需要以“.txt”为扩展名的文件名。该命令总是必须只查看一个深度而不是更深层次的搜索...我尝试在“test.txt”中写入所有找到的文件名,但我的代码无法正常工作。
我的做法:
find rawdata/AB* -type d -name 'demo' -exec find {} -mindepth 1 -maxdepth 1 -type d -regex '.*/[0-9]+' -exec find {} -mindepth 1 -maxdepth 1 -type f -name "*.txt" {} \; | awk -F/ '{print $NF}' > test.txt
我收到这样的错误消息:
‘rawdata/AB.../q.../A.../demultiplexed’: No such file or directory
对我来说,这证明它不会首先搜索 demo,因为它采用了子目录 q...此外,它并没有采用以数字作为名称的文件夹!
正确的路径应该是这样的:
‘rawdata/AB.../demo/123/hereAndJustInThisLevelHereIsTheSearchedFile.txt’
因此,在每个第一个目录级别上必须有“rawdata”顺序,在第二个级别上它应该只检查名称以“AB”开头的目录,在第三个级别上只有一个“demo”,它应该只检查这个在第四级中,它必须仅检查所有以数字作为文件夹名称的目录!
我已经尝试过其他一些类似的代码版本,但没有一个给我正确的结果。
我需要一个 bash 命令来搜索文件夹“rawdata”
find 'rawdata' -maxdepth 1
所有子文件夹名称以“AB”开头,
find 'rawdata' -maxdepth 1 -type d -name 'AB*'
在所有此命令中搜索 子文件夹“演示”
while IFS= read -r dir1; do
find "$dir1" -maxdepth 1 -type d -name 'demo'
done < <(find 'rawdata' -type d -name 'AB*')
在“demo”文件夹中所有具有名称的子文件夹 仅由数字组成。
while IFS= read -r dir1; do
while IFS= read -r dir2; done
find "$dir2" -maxdepth 1 -type d -regex '.*/[0-9]+$'
done < <(find "$dir1" -maxdepth 1 -type d -name 'demo')
done < <(find 'rawdata' -maxdepth 1 -type d -name 'AB*')
从所有以以下名称命名的文件夹中 一个数字,我需要以“.txt”结尾的文件名。
while IFS= read -r dir1; do
while IFS= read -r dir2; done
while IFS= read -r dir3; do
find "$dir3" -maxdepth 1 -type f -name '*.txt'
done < <(find "$dir2" -maxdepth 1 -type d -regex '.*/[0-9]*$')
done < <(find "$dir1" -maxdepth 1 -type d -name 'demo')
done < <(find 'rawdata' -maxdepth 1 -type d -name 'AB*')
它可能需要一些调整才能 100% 正确,但你明白了 - 按摩以适应。