【问题标题】:Combine the output of two ls commands divided by a ; (semicolon)合并两个 ls 命令的输出除以 a ; (分号)
【发布时间】:2012-07-06 12:36:55
【问题描述】:

我一直在尝试查看各种命令,但似乎找不到正确的语法;

我想合并两个ls 命令的输出除以;(分号)并将输出写入文件。

我的 ls 命令是:

ls *.lst
ls -d -1 $PWD/*.lst

应该是这样的:

filename1.lst; /tmp/filename1.lst

并且应该将输出行添加到名为 files.dat (> files.dat?) 的文本文件中

【问题讨论】:

  • 您想将>> 附加或覆盖> 到files.dat 吗?

标签: linux ls


【解决方案1】:

如果我理解正确,你可以试试

echo "$(command1); $(command2)"

【讨论】:

  • 它确实可以,但我真的需要它来执行 filename.lst;/tmp/filename1.lst 所以每行有两个 ls 输出行,由 ; 隔开
【解决方案2】:

试试这个:

find $(pwd) -name '*.lst' -printf '%f; %p\n' >>files.dat

添加(附加)到 files.dat。

【讨论】:

  • 这个会产生错误(find: -printf: unknown option)还是我做错了什么?
  • 你平台的 find 没有实现 -printf 操作符
  • 我正在macosx(sh & bash)上测试它,但它需要在redhat linux上运行
  • 我暂时没有安装redhat
  • 这将在ls *.lst |while read f; do echo "$f; $PWD/$f"; done 上工作,但第一个将在 linux 系统上工作
【解决方案3】:

您的要求可以通过paste完成。

 FILE1="$(mktemp)"
 ls *.lst > $FILE1
 ls -d -1 *.lst | paste -d ";" $FILE1 - >> files.dat

顺便说一句,$PWD 是当前目录,所以$PWD/something 与只写something 相同。

【讨论】:

    猜你喜欢
    • 2017-04-28
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多