find 命令相当于 ls -p

find 命令相当于 ls -p

需要寻找命令生成的输出与ls -p生成的输出完全相同?

由于find /path/to/ -mindepth 1 -maxdepth 1 -exec basename {} \;目录没有尾部斜杠..我需要输出文件夹名称有尾部斜杠

示例输出:

folder 1/
my-file-1.sh

寻找命令列出没有完整路径的目录内容和带有尾部斜杠的文件夹

答案1

$ find /path/to -mindepth 1 -maxdepth 1 -exec sh -c '
     [ -d "$1" ] && printf "%s/\n" "${1##*/}" || printf "%s\n" "${1##*/}" ' _ {} \;
aDirectory/
afile

说明:

  • [ -d "$1" ],这检查它是否是目录,如果是,则运行以下命令printf

    printf "%s/\n" "${1##*/}"
    

    否则,运行如下printf

    printf "%s\n" "${1##*/}"
    
    • ${1##*/}:这会删除所有内容的最长匹配*,直到从文件/目录路径的乞求开始看到的最后一个斜杠/,这只会导致最后一个目录/文件名。

答案2

至少使用 GNU find,您可以使用内置的-printf例如

find . -mindepth 1 -maxdepth 1 -type d -printf '%f/\n' -o -type f -printf '%f\n'

相关内容