终端中文件夹内的文件夹路径

终端中文件夹内的文件夹路径

我有许多文件另存为

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 的所有行/,这恰好是您想要的目录深度。

相关内容