如果你执行了 `ls -ltrd *` 命令,你可以按照修改时间的顺序列出文件或目录(最近的在最后,因为使用了 `r` 选项)。现在你有一个文件,里面包含了这些文件或目录的列表,比如这个列表只包含文件。假设这个文件叫做 `list.txt`。
`list.txt` 文件的内容如下:
```
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/aa
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/ab_file_o.dat
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/bpad_40930.err
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/cds.lib
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/doctags
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/doctags_sw
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/env1
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/hdl.var
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/inc_list.txt
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/logx
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/makefileslist
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/scp_fw/abts.bin
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/sim_cmd.txt
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/sim_cmd/sim_cmd_defines.tcl
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/sim_cmd/sim_cmd_gui_fpga.tcl
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/src_list.txt
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/tags_sw
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/xemis_inc_list.txt
simab21m/sim_rtl_xmm_gemm_f32_spm_test_fpga/xemis_src_list.txt
```
你想按照修改时间的逆序列出这些文件。你尝试了以下命令:
```
ls -ltrd < cat list
```
但是它返回了错误:
```
bash: cat: No such file or directory
```
或者当你尝试了:
```
ls -ltrd < `cat list.txt`
```
它返回了错误:
```
bash: `cat list.txt`: ambiguous redirect
```
你应该怎么做呢?
正确的命令应该是:
```
ls -ltrd $(cat list.txt)
```
这个命令会先执行 `cat list.txt` 来读取文件中的文件名列表,然后将这个列表作为 `ls` 命令的参数,按照修改时间的逆序列出这些文件。
我发现了这个将文件内容通过管道传输给ls命令的问题,这是我的答案:
xargs ls -ltrd < list.txt