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

时间:2017-12-18 18:19:06

标签: linux shell

命令是: -

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

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

1 个答案:

答案 0 :(得分: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