【问题标题】:looping through folder and echoing filename遍历文件夹并回显文件名
【发布时间】:2015-10-06 13:54:52
【问题描述】:

谁能帮我解释为什么这不起作用。终端没有抱怨它正在使用 ./FHTest.sh 运行,但它也没有输出任何内容。在另一个 shell 脚本中使用相同的方法,我可以遍历每个文件。

#!/bin/bash

OrDir="/Volumes/Misc/Downloads"
find "$OrDir" -type f -exec /bin/bash -c \
    'f2=$(basename "$1")
        echo "${f2%.*}"
     ' _ {} \;

ls -l的输出:

-rwxr-xr-x  1 xxx  staff         173  6 Oct 14:51 FHTest.sh

【问题讨论】:

    标签: bash shell terminal


    【解决方案1】:

    您的程序似乎在这里运行良好。要检查的一些事情可能是将 -H 和/或 -L 指定为 find(仅有的两个 POSIX 支持的选项(-exec 是一个操作数)),它们控制遇到符号链接时的行为。尽可能使用printf 而不是echo。虽然 printf 有点棘手,但最终还是会得到回报,因为 echo 在 shell 中会以微妙的方式变化。

    #!/bin/sh 
    OrDir="$(pwd)"
    find "$OrDir" -type f -exec /bin/bash -c \
    'f2=$(basename "$1")
     f2="${f2%.*}"
     printf "$f2\n"
     ' _ {} \;
    

    【讨论】:

    • Brilliant 正在工作!以后会记得避免回声 - 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2011-02-15
    • 2017-07-18
    相关资源
    最近更新 更多