如何在命令行中使用带有 cut 的正则表达式?

2024-01-11

我有一些这样的输出ls -alth:

drwxr-xr-x    5 root    admin   170B Aug  3  2016 ..
drwxr-xr-x    5 root    admin    70B Aug  3  2016 ..
drwxr-xr-x    5 root    admin     3B Aug  3  2016 ..
drwxr-xr-x    5 root    admin     9M Aug  3  2016 ..

现在,我想解析出170B部分,这显然是人类可读格式的大小。我想用cut or sed,因为我不想使用比必要的更复杂/更难使用的工具。

理想情况下,我希望它足够强大来处理B, M or K大小附带的后缀,并相应地乘以1, 1000000 and 1000因此。不过,我还没有找到一个好的方法来做到这一点。

我尝试了一些方法,但并不真正知道最好的方法:

ls -alth | cut -f 5 -d \s+

我希望这会起作用,因为我能够将其划定为一个或多个空格.

但这是行不通的。我如何供应cut使用正则表达式分隔符?或者有没有更简单的方法来仅提取文件的大小ls -alth?

我使用的是CentOS6.4


This answer tackles the question as asked, but consider George Vasiliou's helpful find solution https://stackoverflow.com/a/43312948/45375 as a potentially superior alternative.

  • cut只支持一个single, 文字字符作为分隔符 (-d),所以它不是正确的工具。

  • 为了提取每行以可变数量的空格分隔的标记(字段),awk是最好的工具,所以提出的解决方案乔治·瓦西里乌 https://stackoverflow.com/users/3988526/george-vasiliou最简单的是:
    ls -alth | awk '{print $5}'
    提取第 5 个空格分隔的字段 ($5),即尺寸。

  • 而不是使用-h首先,然后重新转换人类可读的后缀(例如B, M, and G)回到单纯的byte计数(顺便说一下,乘数必须是1024, not 1000),简单地省略-h来自ls命令,默认输出原始字节数:
    ls -alt | awk '{print $5}'

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在命令行中使用带有 cut 的正则表达式? 的相关文章

  • 如何在 sed 中转义方括号[重复]

    这个问题在这里已经有答案了 我正在使用 grep 和 sed 解析遗留的 C 代码 当尝试替换方括号时 发生了一些奇怪的事情 以下代码替换方括号效果很好 echo xyx xzx xyx sed s g 结果是 xyx xzx xyx 当我
  • 如何删除最后一次出现模式后的所有行?

    我想删除最后一次出现模式之后的所有行 除了模式本身 file txt honor apple redmi nokia apple samsung lg htc file txt 我想要什么 honor apple redmi nokia a
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • 通过 bash 从文件中检索电子邮件主题

    我有一个 shell 脚本 它将文件从服务器邮件文件夹下载到 NAS 设备 以便客户端拥有本地备份的副本 文件保存为11469448248 H15587P19346 smtp x14 eu 2 S文件 我已将扩展名更改为标准 eml 格式
  • 忽略 sed 查找和替换命令中的斜杠

    我正在尝试在终端中使用 sed 进行查找和替换 在 apache 配置文件中 我尝试替换 DocumentRoot var www with DocumentRoot var www mysite com public html 从命令行
  • 如何使用 bash 中提供的工具生成一系列非周末日期?

    我想生成一个文件列表 其中名称包含 filename date 例如file 20111101 file 20120703 开始November 1 2011直到今天 应该不包括周末 Thanks 2011年试试这个 for y in 20
  • OSX 和 SED - 删除文档目录中第 25 行之后的所有行

    我有一个包含数千个 txt 文件的目录 我需要修剪文件 以便删除每个文件中第 25 行之后的每一行 我使用的是 Mac OSX 10 14 6 我怎样才能做到这一点 我所做的尝试 经过研究 我认为 Mac OSX 终端中的 SED 是实现此
  • 在 CentOS 中安装 PHP Zip 扩展

    我正在尝试在 CentOS 中安装 PHP Zip 扩展 我的服务器没有外部互联网访问权限 所以我自己从 PECL 下载了它 http pecl php net package zip http pecl php net package z
  • 使用 sed 使用另一个文件的内容替换文件内的文本块

    我希望用另一个文件的内容替换标记之间的文本块 我遇到了这个解决方案 但它只适用于一行 sed n foo p a N bar ba s n REPLACEMENT n p file line 1 line 2 foo REPLACEMENT
  • 是否可以在unix cut 命令中使用字符串作为分隔符?

    如果我想使用字符串作为分隔符来剪切文本列表 这可能吗 例如 我有一个目录 其中一系列 shell 脚本调用相同的 perl 脚本 abc pl 所以当我这样做时 grep abc pl 在该目录中 它给了我以下结果 xyz sh abc p
  • 排除正则表达式匹配中的字符串,以进行 sed 处理

    我需要将其匹配为替代命令 whatever MATCH THIS whateverwhatever AND THIS whateverwhatever 我正在尝试 sed e s 1 g myfile 但这是急切的匹配 MATCH THIS
  • 检查没有 .svn 文件的 svn 存储库

    我的专用服务器 Centos 5 5 上有一个 svn 存储库 位于 var svn myRepository 我只想将这些文件复制到我的生产文件夹 var www myWebapp 中 据我了解 SVN 我只能在本地项目文件夹上使用 sv
  • 在 sed 中插入换行符 (Mac OS X)

    如何在 sed 的替换部分插入换行符 此代码不起作用 sed s 1234 n 1 g input txt gt output txt 其中 input txt 是 test1234foo123bar1234 和output txt应该是
  • 在linux中将包含word的行从一个文件复制到另一个文件

    我想复制包含某些单词的行file1 to file2 Suppose file1 ram 100 ct 50 gopal 200 bc 40 ravi 50 ct 40 krishna 200 ct 100 file2应该只有包含 ct 的
  • 提取括号之间的字符串

    我一直在尝试从以下内容中提取括号 包括括号 之间的子字符串 WHITE TAILED TROPIC BIRD Pha thon lepturus Hawaiian name koae 我试过这个 str echo 1 sed s 1 ech
  • 为什么我无法设置 SSHFS 共享? “OSXFUSE 文件系统不可用”错误

    我正在尝试设置从本地计算机到远程计算机的 SSHFS 共享 但它不起作用 我收到错误 OSXFUSE 文件系统不可用 见下文 如何解决这个问题 仅供参考 我的本地计算机是运行 OSX 10 9 3 的 MacBook Pro 笔记本电脑 远
  • 使用 tac 和 sed 反转文件

    我有一个用例 我需要搜索并替换文件中最后一次出现的字符串并将更改写回文件 下面的案例是该用例的简化版本 我正在尝试反转该文件 进行一些更改 再次将其反转并写入该文件 我为此尝试了以下代码片段 tac test sed s a b sed i
  • 使用 sed 查找并替换包含非转义字符的变量

    我可以使用它来查找 fly 的所有实例 并将其替换为文件中的 insect sed i s fly insect g animals txt 如何找到 BASH 变量并将其替换为另一个 BASH 变量 例如 name echo fly ca
  • 在centos中安装sqlite3 dev和其他包

    我正在尝试使用 cpanel 在 centos 机器上安装 sqlite dev 和其他库 以便能够编译应用程序 我对 debian 比 centos 更熟悉 我知道我需要的库是 libsqlite3 dev libkrb5 dev lib

随机推荐