循环文件夹并回显文件名

时间:2015-10-06 13:54:52

标签: bash shell terminal

任何人都可以帮助我解释为什么这不起作用。终端并不抱怨它与./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

1 个答案:

答案 0 :(得分:0)

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

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