不带文件扩展名的 wc -l 输出
Output of wc -l without file-extension
我得到以下行:
wc -l ./*.txt | sort -rn
我想剪掉文件扩展名。所以使用这段代码我得到了输出:
数 filename.txt
我在 .- 目录中的所有 .txt 文件。但我想要没有文件扩展名的输出,如下所示:
编号文件名
我尝试了一个带 cut 的管道用于不同类型的参数,但我得到的只是用这个命令剪切整个文件名。
wc -l ./*.txt | sort -rn | cut -f 1 -d '.'
使用正确的 mime 类型 的更好方法(tar.gz
的扩展名是什么或此类多扩展名?)
#!/bin/bash
for file; do
case $(file -b $file) in
*ASCII*) echo "this is ascii" ;;
*PDF*) echo "this is pdf" ;;
*) echo "other cases" ;;
esac
done
这是一个 POC,未经测试,请随意 adapt/improve/modify
不幸的是,cut
没有根据索引从末尾提取列的语法。一个(有点笨拙的)技巧是使用 rev
反转行,对其应用 cut
然后 rev
返回:
wc -l ./*.txt | sort -rn | rev | cut -d'.' -f2- | rev
假设您的文件名中没有换行符,您可以使用 sed
去除结尾 .txt
:
wc -l ./*.txt | sort -rn | sed 's/\.txt$//'
以更通用的方式使用 sed
来切断文件的任何扩展名:
$ wc -l *.txt | sort -rn | sed 's/\.[^\.]*$//'
14 total
8 woc
3 456_base
3 123_base
0 empty_base
我得到以下行:
wc -l ./*.txt | sort -rn
我想剪掉文件扩展名。所以使用这段代码我得到了输出: 数 filename.txt
我在 .- 目录中的所有 .txt 文件。但我想要没有文件扩展名的输出,如下所示: 编号文件名
我尝试了一个带 cut 的管道用于不同类型的参数,但我得到的只是用这个命令剪切整个文件名。
wc -l ./*.txt | sort -rn | cut -f 1 -d '.'
使用正确的 mime 类型 的更好方法(tar.gz
的扩展名是什么或此类多扩展名?)
#!/bin/bash
for file; do
case $(file -b $file) in
*ASCII*) echo "this is ascii" ;;
*PDF*) echo "this is pdf" ;;
*) echo "other cases" ;;
esac
done
这是一个 POC,未经测试,请随意 adapt/improve/modify
不幸的是,cut
没有根据索引从末尾提取列的语法。一个(有点笨拙的)技巧是使用 rev
反转行,对其应用 cut
然后 rev
返回:
wc -l ./*.txt | sort -rn | rev | cut -d'.' -f2- | rev
假设您的文件名中没有换行符,您可以使用 sed
去除结尾 .txt
:
wc -l ./*.txt | sort -rn | sed 's/\.txt$//'
以更通用的方式使用 sed
来切断文件的任何扩展名:
$ wc -l *.txt | sort -rn | sed 's/\.[^\.]*$//'
14 total
8 woc
3 456_base
3 123_base
0 empty_base