执行ls命令并将输出存储在变量中

问题描述 投票:-1回答:1

命令是: -

ls-ltr|grep "$(date  +'%b %e')"|cut -d' ' -f14

out将提供今天创建的文件名。我需要知道如何将单个文件存储在单个变量中。例如,如果我在输出中有2个文件,我想将这两个文件存储在2个不同的变量中。请帮我怎么做

linux shell
1个回答
0
投票

Don't parse ls

如果您确定您的文件名不包含空格字符,则可以执行此操作

todayfiles=( $(stat -c "%y@%n" * | grep "^$(date "+%F")" | cut -d@ -f2-) )

如果您的文件名可能包含空格或制表符,但您确定它们不包含换行符,则可以这样做

mapfile -t todayfiles < <(stat -c "%y@%n" * | grep "^$(date "+%F")" | cut -d@ -f2-)

如果您希望能够处理任意文件名,您可以这样做

today=$(date "+%F")
todayfiles=()
for f in *; do
    stat -c "%y" "$f" | grep -q "^$today" && todayfiles+=("$f")
done

然后迭代今天的文件:

for f in "${todayfiles[@]}"; do ...; done
© www.soinside.com 2019 - 2024. All rights reserved.