相关疑难解决方法(0)

如何报告所有子目录中的文件数?

我需要检查所有子目录并报告它们包含多少文件(无需进一步递归):

directoryName1 numberOfFiles
directoryName2 numberOfFiles
Run Code Online (Sandbox Code Playgroud)

ls find

26
推荐指数
3
解决办法
5万
查看次数

为什么 *nix 文件系统支持带换行符的文件名?

根据此页面

Linux 中的文件名可以包含除 (1) 正斜杠 ( / ) 之外的任何字符,正斜杠 ( / ) 保留用作根目录的名称(即包含所有其他目录和文件的目录)和目录分隔符, 和 (2) 空字符(用于终止文本段)。允许使用空格,但最好避免使用空格,因为在某些情况下它们可能与遗留软件不兼容。

太好了,这两个限制都很有意义。既然显然可以禁止在文件名中包含某些字符,为什么允许换行?据我所知,它们的唯一用途是使我们的脚本复杂化。是否有正当理由在文件名中换行?

filesystems filenames newlines

10
推荐指数
1
解决办法
1069
查看次数

“ls -a | grep ^\”的奇怪行为。

我想列出密码的内容并仅显示以点开头的文件。我试过了,ls -a | grep ^\.但我无法弄清楚为什么输出还包含不以点开头的文件。例如:

Pictures
.pip
.pki
.profile
projects
Public
Run Code Online (Sandbox Code Playgroud)

我知道我可以实现我想要的ls -ld .*我只是对我无法解释的 grep 的这种行为感到好奇。

grep regular-expression

10
推荐指数
2
解决办法
9195
查看次数

管道文件名到 zmv

我发现在管道中使用 find 然后使用 grep -v 来过滤文件而不是开发复杂的正则表达式模式要容易得多。但是,当我像这样将某些东西通过管道传输到 zmv 时:

find | grep -v TFLM | zmv "(*)" "TFLM \$1"
Run Code Online (Sandbox Code Playgroud)

它只是忽略输入并继续将转换应用于所有文件。有没有办法告诉它使用管道输入?我想我可以移开过滤掉的文件,然后使用 zmv,但这并不是真正的解决方案。

grep zsh pipe files

4
推荐指数
2
解决办法
419
查看次数

bash,如何围绕某些限制操作“ls”?

ls似乎有许多对我来说很奇怪的限制,这些限制未包含在其开关中(例如--max-depth=其他工具所具有的)。我喜欢维护通用标准(因此lsll遵循大多数普通发行版所具有的标准),但我的其他别名遵循某种易于记住的语法(lls“长列表、安全性”等)。我可以将其分成几个不同的问题,但由于这一切都与寻找通用操作方法的尝试有关ls,因此列出我的工作清单来描述我正在谈论的内容感觉更合适,因为它们都是相关的。一些具体问题:

  • 我经常听到有人说你永远不应该lsfor循环等中使用。这在默认情况下如何查看子目录等方面是有意义的ls,但是有没有一种简单的方法可以剪辑ls以从不查看子目录内部?我--max-depth=man页面中没有看到任何类似的内容,但在我看来,如果我们剪辑ls不进入子目录,那么在循环或其他结构中使用应该是可靠的for。是否有一种可靠的方法来剪辑ls为仅一个目录的输出,然后在 for 循环中使用它?

  • 我使用了我认为相当笨重的结构lld(带有目录的长列表)和llf(带有文件的长列表)。有没有更好的方式来表达“我只想查看文件”?或“我只想查看目录?”;再次, man页面中我看不到任何内容。特别是,我只能以-l格式进行此列表,否则我无法 grep 出我不想显示的项目。一般来说,我认为以这种方式使用 grep 可能是一个坏主意(因为锁定-l格式),那么有没有更好的方法来实现仅选择目录项或仅选择文件,而不是使用 grep ?

  • 如果下面的任何其他方法格式错误,我希望知道更好的方法?

尝试拥有一组标准的ls输出(每个发行版的设置通常不同)。

字符[]集通配符。例如ls name[03][17].c, 将匹配name01.c, name07.c, name31.c, name37.c, 并且[]还允许范围:ls name[07][1-9].c

请注意使用\ls来运行裸命令,忽略别名。

向条目 vs附加-F …

ls bash

2
推荐指数
1
解决办法
792
查看次数

ls 与 wc 命令一起使用

命令是什么:

ls | wc -l
Run Code Online (Sandbox Code Playgroud)

做?我知道

wc <filename>
Run Code Online (Sandbox Code Playgroud)

给出行、词和字符,以及

wc -l <filename> 
Run Code Online (Sandbox Code Playgroud)

打印行数。但是它如何与 ls` 一起使用尚不清楚。它有什么作用?

ls wc

1
推荐指数
1
解决办法
4万
查看次数

标签 统计

ls ×3

grep ×2

bash ×1

filenames ×1

files ×1

filesystems ×1

find ×1

newlines ×1

pipe ×1

regular-expression ×1

wc ×1

zsh ×1