为什么在shell脚本中只使用ls重定向编写一个文件名

时间:2016-08-10 12:55:41

标签: linux bash shell

我正在我的RedHatOS中构建一个shell脚本。

我尝试使用正则表达式输出文件名,如下所示。

#!/bin/bash

ls -1r rrr* > /tmp/memo.txt

并且/tmp/meme.txt的内容是这个

/tmp/rrr1.txt

我想将所有文件写入txt文件,就像我在控制台中做同样的事情

$ls -1r rrr* > /tmp/memo.txt
$cat /tmp/memo.txt

并且cat命令的结果是这个

/tmp/rrr1.txt
/tmp/rrr2.txt

我不明白发生了什么。请告诉我为什么会发生这种情况,以及如何将ls命令的所有结果写入文件。

感谢。

2 个答案:

答案 0 :(得分:0)

使用以下内容获取完整路径:

ls -d -1 $PWD/rrr*

结果:

/tmp/rrr1.txt
/tmp/rrr2.txt
/tmp/rrr3.txt

另外,ls -1r你会得到

rrr3.txt
rrr2.txt
rrr1.txt

并使用ls -1(不包含r)为您提供

rrr1.txt
rrr2.txt
rrr3.txt

所以你的脚本看起来像这样:

#!/bin/bash

ls -d -1 $PWD/rrr* > /tmp/memo.txt

答案 1 :(得分:-2)

谢谢大家。 现在我在bash脚本中使用ls得到了特定目录中输出文件名的答案...

#!/bin/bash
data=("$(ls -trh "$@")")
for entry in "${data[@]}"
do
  echo "${entry}" > /tmp/memo.txt
done

您可以使用此文件将所有文件名转换为文本文件(/tmp/memo.txt)。