当目录列表存储为变量时,为什么每行都缺少换行符?

当目录列表存储为变量时,为什么每行都缺少换行符?

在 Ubuntu 20.04 中,当我运行此命令时,得到以下结果:

在 CLI 上:

#find /home/ftpusers/ -name '*.jpg' -type f -printf '%p %u %TY%Tm%Td%TH%TM%.2TS\n' | sort --stable --reverse --key=3,4

产量:(完美!)

/home/ftpusers/1800wls1/1800WLS610Entry_20200505055737010_GH53J.jpg 5501 20200505115737
/home/ftpusers/1800wls1/1800WLS610Entry_20200505055453330_0207.jpg 5501 20200505115453
/home/ftpusers/1800wls1/1800WLS610Entry_20200505055033850_FPM3494.jpg 5501 20200505115034
/home/ftpusers/1800wls1/1800WLS610Entry_20200505054800520_MKR1529.jpg 5501 20200505114801
/home/ftpusers/1800wls1/1800WLS610Entry_20200505054755850_C0NTRACT.jpg 5501 20200505114755
/home/ftpusers/1800wls1/1800WLS610Entry_20200505054501710_HYY8462.jpg 5501 20200505114501

但是,当我尝试在脚本中捕获相同命令的输出时,换行符会被忽略,并且所有数据都会集中到一行而没有换行符。

就像这样:

#!/bin/bash
files=$(find /home/ftpusers/ -name '*.jpg' -type f -printf '%p %u %TY%Tm%Td%TH%TM%.2TS\n' | sort --stable --reverse --key=3,4)

echo $files

产量:

/home/ftpusers/1800wls1/1800WLS610Entry_20200505045623550_J4171.jpg 5501 20200505105624 /home/ftpusers/1800wls1/1800WLS610Entry_20200505044851810_C0NTRACT
.jpg 5501 20200505104852 /home/ftpusers/1800wls1/1800WLS610Entry_20200505044440130_7731.jpg 5501 20200505104441 /home/ftpusers/1800wls1/1800WLS610Entry_20200
505044243730_CC4480.jpg 5501 20200505104244 /home/ftpusers/1800wls1/1800WLS610Entry_20200505043703450_55L07.jpg 5501 20200505103707 /home/ftpusers/1800wls1/1
800WLS610Entry_20200505041813080_MJ4465.jpg 5501 20200505101814 /home/ftpusers/1800wls1/1800WLS610Entry_20200505041115600_C0NTRACT.jpg 5501 20200505101118 /h
ome/ftpusers/1800wls2/1800WLSSanFelipeExit_20200504212713750_CMV72.jpg 5502 20200505022717 /home/ftpusers/1800wls2/1800WLSSanFelipeExit_20200504212634020_BH7
X433.jpg 5502 20200505022640 /home/ftpusers/1800wls2/1800WLSSanFelipeExit_20200504211114600_LTM4327.jpg 5502 20200505021117 /home/ftpusers/1800wls2/1800WLSSa
nFelipeExit_20200504211021870_67225Y9.jpg 5502 20200505021027

如何保留每行的换行符?我需要一次处理一行。

我甚至尝试过这个:

#!/bin/bash
find /home/ftpusers/ -name '*.jpg' -type f -printf '%p %u %TY%Tm%Td%TH%TM%.2TS\n' | sort --stable --reverse --key=3,4 > /tmp/filelist
files=$(cat /tmp/filelist)
filecount=$(echo $files | wc -l)
echo $files

执行时,$filecount = 1(因为所有数据只有一行!)并且 $files 的回显会产生一行集中在一起的数据。

提前致谢!

相关内容