我有一个名为pathlist.txt
. 它看起来像这样:
/home/abc/dirA
/home/abc/dirB
/home/abc/dir with space
/home/abc/dirX
我需要在每个路径中找到所有文件。以下方法有效,但仅适用于其中没有空格的路径:
find $(tr '\n' ' ' < pathlist.txt) -type f -printf "%p, %AY-%Am-%Ad \n"
我尝试了设置IFS=$'\n'
和一些实验,xargs
但没有成功。关于如何确保 find 接受其中包含空格(可能还有其他特殊字符)的路径的任何建议?
假设
bash
,一种方法是:该
readarray
方法是最简单的,但如果您使用的 shell 不支持它,您可以尝试以下方法,它应该适用于任何 POSIX shell:如果您使用的是 xargs 的 GNU 实现,则可以使用该
-d
选项来设置分隔符,在本例中为换行符。演示:
因此,您的命令的第一次尝试将是
这有两个问题:
find
实例。xargs -I
-L1
printf %q
您可以通过使用 GNU生成为 shell 转义的字符串来解决第一个问题:对于第二个,请考虑使用 with分隔
\0
,并使用xargs -0
to 将其用作分隔符。