2017-04-20 60 views
0

您好我知道如何使用LinuxUbuntu Linux操作系统:如何计算某些文件的编号在目录

command:ls -l . | egrep -c '^-'. 

统计所有文件的数量在一个目录如果目录下有test_1.jpg, train_1.jpg, test_2.jpg, train_1.jpg .....。我只想统计test_*jpg的数字,并不计算此目录中train_*.jpg的数量。如何使用Linux命令来做到这一点。谢谢!

+0

https://unix.stackexchange.com/questions/146760/count-files-in-a-directory-by-extension – 4EACH

回答

1

我觉得ls -1 |> wc -l效果很好。请注意,这是一个负号,而不是减号字母l。

编辑:

所以,你的情况应该ls -1 test*.jpg | wc -l工作。你可以调整通配符。在这种情况下,它将匹配从test开始并以.jpg结尾的任何内容。

+0

感谢您的评论,我只想计算一下测试的数量_ *。jpg不包括火车_ *。jpg – tktktk0711

+0

为此更新了答案。其实,我没有包含下划线,所以也许你想让glob得到'test _ *。jpg' –

+0

谢谢你的回答。 – tktktk0711

1

请问以下为你工作:

ls -l *train_*.jpg | egrep -c '^-'. 
+0

这当然在我自己的测试中有类似的数据。 – David

1

如果您所有的文件都在同一目录dir,下面的命令将帮助你。

ll dir/test_*.jpg | wc -l 
ls -al dir/test_*.jpg | wc -l 

释:

ls -al dir/test_*.jpg | wc -l 

# ll is short for ls -al 
# -l use a long listing format 
# -a, --all 
#  do not hide entries starting with . 

# wc -l print the newline counts. 
1

只要你的文件名不能包含空格

a=(test*.jpg); echo ${#a[@]} 

还要检查shopt nullglob检测空列表。

+0

或者在填充阵列之前设置IFS = $'\ n'',不要担心空间。我可能会这样做,并将'echo'改为'find。 -type f -printf“%f \ n”' –

相关问题