Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 当文件名包含空格时,使用find列出路径_Linux_Bash_Shell - Fatal编程技术网

Linux 当文件名包含空格时,使用find列出路径

Linux 当文件名包含空格时,使用find列出路径,linux,bash,shell,Linux,Bash,Shell,我有这个密码 for i in $(find pwd) do echo $i done 问题是,如果文件名包含空格,它将打印在单独的行上 如何列出某个目录中的所有文件,包括包含空格的文件 IFS=$'\n' for i in $(pwd) do echo $i done 这是解决办法 IFS=$'\n' for i in $(pwd) do echo $i done 我会在阅读时使用 find.|当我读

我有这个密码

for i in $(find pwd)
do
    echo $i
done
问题是,如果文件名包含空格,它将打印在单独的行上

如何列出某个目录中的所有文件,包括包含空格的文件

IFS=$'\n'
    for i in $(pwd)
    do
        echo $i
    done
这是解决办法

IFS=$'\n'
    for i in $(pwd)
    do
        echo $i
    done

我会在阅读时使用

find.|当我读书时;不要重复$i;完成

编辑:

或者,您可以只执行
ls-a1

我会在阅读时使用

find.|当我读书时;不要重复$i;完成

编辑:

或者,您可以只执行
ls-a1

这将产生您的示例的预期效果:

find /path/to/somewhere
也就是说,不需要在其周围环绕for循环

但我猜你想要的不仅仅是回声。也许为每个文件调用一个脚本?您可以通过以下方式实现:

find /path/to/somewhere -exec path/to/script.sh {} \;

其中,
{}
将为找到的每个文件名替换。

这将产生您示例的预期效果:

find /path/to/somewhere
也就是说,不需要在其周围环绕for循环

但我猜你想要的不仅仅是回声。也许为每个文件调用一个脚本?您可以通过以下方式实现:

find /path/to/somewhere -exec path/to/script.sh {} \;

其中,
{}
将为找到的每个文件名替换。

为什么限制为
$7
?如果路径包含更多空格,它将失败,对吗?
awk
解决方案是非解决方案,因为您只处理目录名,而不是目录下包含的文件名。虽然基于
IFS
的解决方案有效,但它只适用于不包含新行的文件名(这是罕见的,但合法的)。为什么仅限于
$7
?如果路径包含更多空格,它将失败,对吗?
awk
解决方案是非解决方案,因为您只处理目录名,而不是目录下包含的文件名。虽然基于
IFS
的解决方案有效,但它只适用于不包含新行的文件名(这是罕见的,但合法的)。just
find pwd
有什么问题?just
find pwd
有什么问题?