如何在Bash中列出ls命令筛选出的每个文件的行数?
在Bash中列出指定文件并同时显示行数的方法
当然可行,这里有几种实用的实现方式,结合ls和wc就能满足需求:
方法一:循环遍历+合并ls与wc输出
通过循环逐个处理匹配的文件,先获取行数再和ls的详细信息拼接:
for file in *usc*.vhd; do # 确保是普通文件(避免匹配到目录) if [[ -f "$file" ]]; then # 只获取行数(< 符号避免wc输出文件名) line_count=$(wc -l < "$file") # 用awk把行数追加到ls输出末尾 ls -l -S "$file" | awk -v lines="$line_count" '{print $0, "| 行数:", lines}' fi done
方法二:先排序再输出行数+文件信息
先通过ls -S按文件大小排序,再逐个统计行数并格式化输出:
ls -S *usc*.vhd | while read -r file; do if [[ -f "$file" ]]; then # 格式化输出:行数占5位宽度,后面跟文件详细信息 printf "%-5d %s\n" $(wc -l < "$file") "$(ls -l "$file" | cut -d' ' -f2-)" fi done
关于wc的小说明
wc -l filename会同时输出行数和文件名,比如123 test.usc.vhdwc -l < filename只会输出纯数字的行数,更适合脚本中提取数值使用
内容的提问来源于stack exchange,提问作者quantum231
相关产品推荐
相关产品推荐

