我有许多文件另存为
Year -> Month -> Day -> bunch of .nc files
我想生成包含 nc 文件的所有目录的列表。我可以列出每个 nc 文件的路径:
find /Year/ -name *.nc | sort > directory_list.txt
它在此主文件中的这些文件夹的子目录中查找每个 .nc 文件。然后,这些结果将保存在文本文件“directory_lists”中。
/2000/01/01/nc_file1.nc
/2000/01/01/nc_file2.nc
/2000/01/01/nc_file3.nc
/2000/01/02/nc_file3.nc
/2000/01/03/nc_file3.nc
等等...如何稍微修改一下,以便我有每个“Day”目录的列表?这与我使用上面的命令得到的结果类似,但不包含有关 nc 文件的信息。
我努力了:
find /Year/ | sort > directory_list.txt
但这会返回每条路径
/Year/
/Year/Month
/Year/Month/Day
我希望结果是:
/2000/01/01/
/2000/01/02/
/2000/01/03/
等等...不重复目录名称
我想这和试图获取Year目录中第三级文件夹的目录是一样的吗?任何意见,将不胜感激。
答案1
find /Year/ -name '*.nc' | sed -e 's:/[^/]*$:/:' | sort -u
将为您提供至少包含一个名称与“*.nc”匹配的文件的目录列表
答案2
egrep '/[^/]+/[^/]+/' directory_list.txt
这将为您提供恰好包含 3 的所有行/
,这恰好是您想要的目录深度。