-1

我想在 bash 脚本中将 sed 与字符串一起使用,而无需读取或写入任何文件。我用谷歌搜索,我找不到任何东西

具体来说,我试图通过执行以下操作来获取给定目录中的文件数:

RAW=$(ls $DIRNAME | wc)
# RAW --> ? sed ? --> answer
4

6 回答 6

3

不是sed,但它更适合这个问题。

ls | wc -l

通常,sed将字符串作为输入。例如,

ls | sed 's/\./Period replaced by sed/g'

于 2013-08-09T22:37:26.053 回答
1

answer=$(echo $RAW|sed <YOURSTUFF>)

于 2013-08-09T22:37:50.570 回答
1

您可以使用lsandwc来执行此操作。

\ls | wc -l

于 2013-08-09T22:38:49.060 回答
1

对于包含换行符的文件,所有ls ... | wc ...解决方案都将失败。仅当目录为空时才会失败:

set -- *
printf "%d\n" "$#"

或者如果您想包含点(隐藏)文件:

set -- .* *
printf "%d\n" "$#"

这将包括 . 和..,所以如果这是不受欢迎的(它可能是)减去 2

于 2013-08-10T02:18:54.470 回答
1

你可以写:

ls -1R | wc -l

要将计数存储在变量中,您可以编写如下内容:

#!/bin/sh

total=`ls -1R | wc -l`   # stores the count in $total

echo $total              # prints the count
于 2013-08-09T22:48:05.273 回答
1

一个使用 wc 的解决方案,如果文件名中包含新行,也可以使用:

 find  .  -maxdepth 1 -mindepth 1 -print0 | tr -dc '\0' | wc -c
于 2013-08-10T08:59:58.903 回答