AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 452339
Accepted
kadekai
kadekai
Asked: 2018-06-28 18:31:50 +0800 CST2018-06-28 18:31:50 +0800 CST 2018-06-28 18:31:50 +0800 CST

从 `ls -al` 命令的输出中删除硬链接的数量

  • 772

这是ls -al命令输出:

total 280K
drwxrwxr-x 2 enan enan 4.0K Jun 28 09:59 ranger/
drwxrwxr-x 2 enan enan 4.0K Jun  8 23:26 scripts/
-rw-rw-r-- 1 enan enan   49 Jun  4 18:19 caps_to_ctrl.sh
-rw-rw-r-- 1 enan enan  739 Jun  4 18:19 cmus.theme
-rw-rw-r-- 1 enan enan 8.6K Jun  4 18:19 compton.conf
-rw-rw-r-- 1 enan enan 5.9K Jun 22 09:39 config
-rw-rw-r-- 1 enan enan  859 Jun 14 12:13 i3blocks.conf
-rw-rw-r-- 1 enan enan 4.7K Jun 14 12:13 init.el
-rw-rw-r-- 1 enan enan 8.7K Jun 28 11:22 init.vim
-rw-rw-r-- 1 enan enan  815 Jun 14 12:13 install.sh
-rwxrwxr-x 1 enan enan  142 Jun  4 18:19 lock.sh*
-rw-rw-r-- 1 enan enan 1.1K Jun 21 13:30 README.md
-rw-rw-r-- 1 enan enan 197K Jun 14 12:13 screenshot.png
-rw-rw-r-- 1 enan enan 1.2K Jun 20 21:51 Session.vim
-rw-rw-r-- 1 enan enan  427 Jun  9 13:46 tmux.sh

-rw-rw-r--您可以看到文件权限和文件所有者之间有一个数字enan。该数字是文件的硬链接数。在输出中显示可能对某些情况有用,但现在,我不需要它,有时它会分散我的注意力。你可以看到,我有办法从输出中删除最后修改的日期,ls -al因为我现在不需要它。

那么,如何从ls -al命令输出中删除硬链接的数量?在命令的输出中显示硬链接的数量和最后修改日期的重要性是什么?我的意思是,如果你们中的任何人使用这些信息,请告诉我为什么以及如何这样做,因为我不想无意中影响我应该使用的行为。

bash ls
  • 3 3 个回答
  • 537 Views

3 个回答

  • Voted
  1. Best Answer
    Nasir Riley
    2018-06-28T19:03:33+08:002018-06-28T19:03:33+08:00

    如果您不想看到第二列中的链接,则可以通过管道ls -al将awk其删除:

    ls -al | awk '{$2=""; print $0}'
    

    在这种情况下,这将使用标准分隔符打印除第二列之外的所有列,即空格。

    在我的环境中,最后修改日期的列是 6、7 和 8,使用空格作为分隔符,以便摆脱它们和第二列:

    ls -la | awk '{$2=$6=$7=$8=""; print $0}'
    

    如果您不需要或不想看到某些列,那么您可以使用上面的语法作为模型来删除您想要的任何列。它不会伤害任何东西。如果您只想查看所有列以免错过任何内容,请使用标准:

    ls -al
    

    如果需要别名,请将以下内容添加到 ~/.bashrc:

    la() {
        ls -la | awk '{$2=$6=$7=$8=""; print $0}'
    }
    

    这是一个行为方式相同的函数,无需考虑和转义单引号和双引号。我使用laasll给出了一个语法错误,因为它在我的环境中已经是一个别名。

    • 2
  2. Kusalananda
    2018-06-28T22:16:15+08:002018-06-28T22:16:15+08:00

    要从输出中删除硬链接计数,ls -l同时仍保持该行的其余部分完好无损:

    ls -l | sed -E '2,$s/ +[0-9]+//'
    

    替换将sed删除第一行之后的每一行中的第一组数字及其之前的任何空格(第一行包含total)。

    作为一个函数

    myls () {
        command ls -l "$@" | sed -E '2,$s/ +[0-9]+//'
    }
    

    在ls -l通过sed.

    通过使用command ls,我们确保,如果您稍后决定将函数重命名为ls,该函数不会递归调用自身。

    例子:

    $ ls -la ~/.skel
    total 18
    drwxr-xr-x  2 kk    wheel  512 May  4 16:29 .
    drwxr-xr-x  3 kk    wheel  512 Jun 28 08:15 ..
    -rw-r--r--  1 kk    wheel   87 Nov  1  2017 .Xdefaults
    -rw-r--r--  1 kk    wheel  771 Feb  9 10:18 .cshrc
    -rw-r--r--  1 kk    wheel  101 Nov  1  2017 .cvsrc
    -rw-r--r--  1 kk    wheel  359 Nov  1  2017 .login
    -rw-r--r--  1 kk    wheel  175 Nov  1  2017 .mailrc
    -rw-r--r--  1 kk    wheel  229 May  4 16:29 .profile
    -rw-r--r--  1 kk    wheel  108 Apr 15 12:50 .vimrc
    -rw-r--r--  1 kk    wheel    0 Apr 21 17:44 .zshrc
    
    $ myls -a ~/.skel
    total
    drwxr-xr-x  kk    wheel  512 May  4 16:29 .
    drwxr-xr-x  kk    wheel  512 Jun 28 08:15 ..
    -rw-r--r--  kk    wheel   87 Nov  1  2017 .Xdefaults
    -rw-r--r--  kk    wheel  771 Feb  9 10:18 .cshrc
    -rw-r--r--  kk    wheel  101 Nov  1  2017 .cvsrc
    -rw-r--r--  kk    wheel  359 Nov  1  2017 .login
    -rw-r--r--  kk    wheel  175 Nov  1  2017 .mailrc
    -rw-r--r--  kk    wheel  229 May  4 16:29 .profile
    -rw-r--r--  kk    wheel  108 Apr 15 12:50 .vimrc
    -rw-r--r--  kk    wheel    0 Apr 21 17:44 .zshrc
    

    除非您使用,否则该功能的变体完全一样:lsls -l

    ls () (
        add_filter=0
        while getopts ':l' opt; do
            case $opt in
                l)  add_filter=1 ;;
                1)  add_filter=0
            esac
        done
    
        command ls "$@" | 
        if [ "$add_filter" -eq 1 ]; then
            sed -E '2,$s/ +[0-9]+//'
        else
            cat
        fi
    )
    

    该函数执行自己的命令行解析以检测是否-l使用了该选项(并且以后也不会通过使用禁用-1)。如果是,我们设置一个标志。稍后,如果设置了标志,我们过滤lsthrough的输出sed。如果未设置标志,我们只需将输出原样通过cat.

    • 1
  3. Stéphane Chazelas
    2018-06-28T22:34:16+08:002018-06-28T22:34:16+08:00

    使用 ast-open (如果它已被包含并且在 in 之前,也是 ksh93的内置ls函数),您可以完全指定输出格式并省略那里的链接数():ls/opt/ast/bin/bin$PATH%3(nlink)u

    ls -rSZ '%(mode)s %-8(uid)s %-8(gid)s %8(device:case::%(size)u:*:%(device)s)s %(atime)s %(name)s%(linkop:case:?*: %(linkop)s %(linkpath)s)s'
    
    • 0

相关问题

  • 通过命令的标准输出以编程方式导出环境变量[重复]

  • 从文本文件传递变量的奇怪问题

  • 虽然行读取保持转义空间?

  • `tee` 和 `bash` 进程替换顺序

  • 运行一个非常慢的脚本直到它成功

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve