使用 ls > filelist 并将文件列表内容更改为文件列表

使用 ls > filelist 并将文件列表内容更改为文件列表

我需要使用ls > filelistand ,但是当使用时它会显示with"cat filelist"中的所有内容作为其中的名称之一,但我需要更改它。我不确定如何仅对文件列表执行此操作(如果有意义的话)。filelistfilelist"* * * File List * * *"filelist

答案1

ls > /tmp/filelist
echo "* * *  File List  * * *"
cat /tmp/filelist

假设您没有列出/tmp.如果是这种情况,请更改/tmp/var/tmp

答案2

你可以做:

ls | grep -vx filelist > filelist

-v选项使其从输出中排除匹配行,并-x使其匹配整行(因此不会跳过otherfilelist)。

答案3

Unix 命令非常简洁,并且不会用页眉/页脚或不相关的细节来装饰它们的输出,正是为了使它们在随机管道中的使用更容易。添加这样的内容非常简单:

(echo '* * * This is a header * * *'; ls ; echo --* footer *--) > filelist

答案4

只是为了更深入的理解:您可以轻松地将整个命令分为三部分:

  1. 回声”文件列表"; echo 在 STDIN(标准输入)上打印输出(如果您没有在其他地方通过管道输出)

  2. LS | grep -vx 文件列表;列出当前目录的内容并将输出通过管道传输到 grep。通常,在我们的例子中,“grep”只会打印包含给定关键字(“filelist”)的行。使用选项 -v 我们正在查找不包含关键字的行。正如 Barmar 所提到的,它还会排除包含“filelist”的文件,例如“myfilelist”、“filelist2”等,因此建议使用 -x 。

  3. filelist 将输出重定向到文件“filelist”。由于 (1) 和 (2) 位于括号中并以分号分隔,因此两个命令的输出(将在 STDIN 上打印出来)将被重定向到此文件。

相关内容