Bash 保留find-printf输出中的空白

Bash 保留find-printf输出中的空白,bash,find,printf,Bash,Find,Printf,我用fond读取文件列表,并用-printf输出,在这里我基本上创建了一个由换行符分隔的字符串。当我尝试循环执行此操作时,带有空格字符的文件名将作为新条目呈现 在保留文件名中的空白的同时,我该如何阅读 loop() { files=$(find "${base}" -name "*" -printf "%TD%TT|%p\n") for string in $files do stamp=${string%|*} file=${stri

我用fond读取文件列表,并用-printf输出,在这里我基本上创建了一个由换行符分隔的字符串。当我尝试循环执行此操作时,带有空格字符的文件名将作为新条目呈现

在保留文件名中的空白的同时,我该如何阅读

loop() {
    files=$(find "${base}" -name "*" -printf "%TD%TT|%p\n")

    for string in $files
    do 
        stamp=${string%|*}
        file=${string#*|}

        echo "$stamp - $file"
    done
}

由于Sheller的评论,While循环允许我将行分隔为变量:

loop() {
    while read string
    do
        stamp=${string%|*}
        file=${string#*|}

        files_new[$file]=$stamp
    done < <(find "${base}" -name "*" -printf "%TD%TT|%p\n")
}
loop(){
读字符串时
做
stamp=${string%|*}
file=${string}*}
文件\u新[$file]=$stamp

由于Sheller的评论,While循环允许我将行分隔为变量:

loop() {
    while read string
    do
        stamp=${string%|*}
        file=${string#*|}

        files_new[$file]=$stamp
    done < <(find "${base}" -name "*" -printf "%TD%TT|%p\n")
}
loop(){
读字符串时
做
stamp=${string%|*}
file=${string}*}
文件\u新[$file]=$stamp

完成<为什么不将
find
直接输入
while
循环。在此处搜索
[bash]find while printf0 xargs
。祝您好运。为什么不将
find
直接输入
while
循环。在此处搜索
[bash]查找while printf0 xargs
。祝你好运。尝试
while IFS=\\\读取-r文件戳;do files\u new[$file]=$stamp;done<不介意我问,但是这会有什么好处?不多,只需保存
stamp=${string%\*}
文件=${string*}
的开头,为
的循环体。它也更具可读性…我无法理解
的含义*“
作为
-name
的参数。这似乎是多余的。:-)好的,很酷。请务必查看
查找
-type
选项及其参数。例如,您可以选择仅通过传递d参数来输出目录,仅通过传递f和更多参数来输出文件。在IFS=\\\读取-r文件戳;do files\新建[$file]时尝试
=$stamp;done<不介意我问,但是这样做有什么好处呢?不多,只要保存
stamp=${string%.*}
file=${string}.*.*.
for
的循环体中。它也更具可读性…我无法理解
的含义*“
作为
-name
的参数。这似乎是多余的。:-)好的,很酷。请务必查看
查找
-type
选项及其参数。例如,您可以选择仅通过传递d参数输出目录,仅通过传递f等参数输出文件。