我想在 bash 脚本中将 sed 与字符串一起使用,而无需读取或写入任何文件。我用谷歌搜索,我找不到任何东西
具体来说,我试图通过执行以下操作来获取给定目录中的文件数:
RAW=$(ls $DIRNAME | wc)
# RAW --> ? sed ? --> answer
不是sed
,但它更适合这个问题。
ls | wc -l
通常,sed
将字符串作为输入。例如,
ls | sed 's/\./Period replaced by sed/g'
answer=$(echo $RAW|sed <YOURSTUFF>)
您可以使用ls
andwc
来执行此操作。
\ls | wc -l
对于包含换行符的文件,所有ls ... | wc ...
解决方案都将失败。仅当目录为空时才会失败:
set -- *
printf "%d\n" "$#"
或者如果您想包含点(隐藏)文件:
set -- .* *
printf "%d\n" "$#"
这将包括 . 和..,所以如果这是不受欢迎的(它可能是)减去 2
你可以写:
ls -1R | wc -l
要将计数存储在变量中,您可以编写如下内容:
#!/bin/sh
total=`ls -1R | wc -l` # stores the count in $total
echo $total # prints the count
一个使用 wc 的解决方案,如果文件名中包含新行,也可以使用:
find . -maxdepth 1 -mindepth 1 -print0 | tr -dc '\0' | wc -c