如何使用find和for循环遍历每个文件

时间:2016-04-12 03:42:59

标签: linux shell find ifs

我编辑了这篇文章以简化它。 我有以下格式的文件名: 07:34 FDE54B69F43633180FB5401F42E4D1B443BD37BB349B7A6CF073CE23CDF2E2EE.json_2016-02-22 08:56 请注意,我在文件名末尾的日期和小时之间有一个空格

我正在使用此代码查找文件名并将其打印出来。 我想分别打印每个文件名。

files=($(find test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort -r))

#IFS=' test/' read -r -a array <<< "$files"

for files in ${files[*]}
do
    echo "filenames="$files
done

我在文件名末尾的空间方面遇到了问题。

for files in "${files[*]}"
do
    echo "filenames=""$files"
done

如果我使用&#34;&#34; ,我会立即获取所有文件名,而我不想要它。我需要循环迭代每个文件名。

我该怎么做才能实现这个目标?

-----在这里更新 实际上,我需要首先迭代最新的文件,所以我尝试做这样的事情:

find /test/ -printf "%TY-%Tm-%Td %TT %p\n" -print0 | sort -r             | while IFS= read -r -d '' file;
do
     echo "$file"
done

但它无法正常工作= |

1 个答案:

答案 0 :(得分:0)

find . -name 'FDE*json_2016*' -print0 | sort -r | xargs -0 -I {} echo reading {}

为我做了诀窍。不过,您应该更改名称模式。