我有一个名为 10K_TIF 的目录(主目录)。该主目录中有多个子目录,每个子目录都包含 tif 图像。我想读取每个 TIF 图像并使用 bash 命令提取其路径。 10K_TIF 大小超过 15TB。
样本:
10K_TIF/4320cc/4320cc_01_rectified.tif
10K_TIF/4320cc/4320cc_02_rectified.tif
10K_TIF/4520cc/4520cc_01_rectified.tif
10K_TIF/4520cc/4520cc_02_rectified.tif
我设法回显每个子目录,还设法回显所有 tif 图像,但这些图像位于单独的命令中。
答案1
您可以使用find
:
find 10K_TIF -iname '*TIF'
要循环结果并对每个图像执行某些操作,您可以使用:
find 10K_TIF -iname '*TIF' | while read tif; do echo "Found: $tif"; done
上面假设文件名正常,没有空格或奇怪的字符。如果您的文件名可以包含此类字符,请改用以下字符:
find 10K_TIF -iname '*TIF' -print0 |
while IFS= read -r -d '' tif; do echo "Found: $tif"; done
答案2
find 10K_TIF -iname "*.tif"
如果你想处理每个文件,比如查找文件的内容类型
find 10K_TIF -iname "*.tif" -print0 | xargs -0 -n1 file
或者计算md5sum
find 10K_TIF -iname "*.tif" -print0 | xargs -0 -n1 md5sum
答案3
如果您想(仅)列出所有子目录中的所有 *.tiff 文件,bash
最容易使用**
模式(globstar):
shopt -s globstar
ls **/*.tiff
答案4
您可以find
用于查找所有文件并将它们传递给您想要使用的任何命令
find 10K_TIF -iname "*.tif" -type f -print0 | xargs -0 -n1 <command>
这会搜索10K_TIF
所有子目录,匹配以.tif
(不区分大小写)结尾的所有内容和.tif
是一个常规文件(即不处理目录、特殊文件和以 结尾的符号链接)。
例如,如果您想处理符号链接和常规文件,您可以使用
find 10K_TIF -iname "*.tif" \( -type f -o -type l \) -print0 | xargs -0 -n1 <command>