【问题标题】:How to get the full path of a particular directory?如何获取特定目录的完整路径?
【发布时间】:2014-03-18 01:53:36
【问题描述】:

我有一个目录 /home/usr/AAA 并在那里存储了一些文件和文件夹

/home/usr/AAA/Mark/15456/sdfsd/VIP_Info_sdfsdf
/home/usr/AAA/Jack/23678/gwewd/VIP_Info_wetwod
...

我可以使用一些 bash 脚本,例如

cd /home/usr/AAA     
find -maxdepth 4 -mindepth 4 -type d -iname "VIP_Info*" -printf '%f\n'

返回

VIP_Info_sdfsdf
VIP_Info_wetwod

获取我感兴趣的特定文件夹名称,即以 VIP_Info 开头的文件夹名称。

但是,我想进入每个文件夹并做一些操作。

请问如何获取每个文件夹的完整路径?

【问题讨论】:

    标签: linux bash shell


    【解决方案1】:

    改用$PWD%P 格式:

    find -maxdepth 4 -mindepth 4 -type d -iname "VIP_Info*" -printf "$PWD/%P\n"
    

    或者,使用%p 并将当前目录的全名传递给find,而不是让它默认为工作目录。

    find /home/usr/AAA -maxdepth 4 -mindepth 4 -type d -iname "VIP_Info*" -printf "%p\n"
    

    注意-print-printf "%p\n" 是等价的。

    由于您没有使用 find 提供的任何其他过滤器,并且您似乎知道要查找的目录的深度,因此您可以简单地使用 glob 模式而不涉及 find

    printf "%s\n" /home/usr/AAA/*/*/*/VIP_Info*/
    

    【讨论】:

    • 第一种方法好像不太对。我测试过,它返回 $PWD/Mark/15456/sdfsd/VIP_Info_sdfsdf,但不是完整路径 /home/usr/AAA/Mark/15456/sdfsd/VIP_Info_sdfsdf
    • 哦。我用双引号进行了测试,但出于某种原因在帖子中使用了单引号。我会解决的。
    【解决方案2】:

    不知道为什么那个人会删除他的帖子,但这是一个很好的解决方案:

    find `pwd` -type d -iname "VIP_Info*"
    

    仅供参考。

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2011-03-26
      相关资源
      最近更新 更多