ls中特定部分的Grep文件名

ls中特定部分的Grep文件名,grep,Grep,我想从文件名中提取一个特定的部分来处理它们。 例如: 所以我只想得到有名字的部分。 如何做到这一点?有几种方法可以做到这一点。这里有一个循环: for file in REZ-*-??-??-????.png do name=${file#*-} name=${name%-??-??-????.png} echo "($name)" done 给定各种各样的文件名,包括间距、附加连字符和换行符的各种边缘大小写: REZ-Anna-Maria,de-la-Cruz-12-32-201

我想从文件名中提取一个特定的部分来处理它们。 例如:

所以我只想得到有名字的部分。
如何做到这一点?

有几种方法可以做到这一点。这里有一个循环:

for file in REZ-*-??-??-????.png
do
  name=${file#*-}
  name=${name%-??-??-????.png}
  echo "($name)"
done
给定各种各样的文件名,包括间距、附加连字符和换行符的各种边缘大小写:

REZ-Anna-Maria,de-la-Cruz-12-32-2015.png
REZ-Bjørn,Dæhlie-01-01-2015.png
REZ-First,Last-12-32-2015.png
REZ-John Quincy,Adams-11-12-2014.png
REZ-Ridiculous example                            # this is one filename
is ridiculous,but fun-22-11-2000.png              # spanning two lines
它输出:

(Anna-Maria,de-la-Cruz)
(Bjørn,Dæhlie)
(First,Last)
(John Quincy,Adams)
(Ridiculous example
is ridiculous,but fun)
如果您不太关心正确性,可以进一步简化:

$ ls | grep -o '[^-]*,[^-]*'
Maria,de
Bjørn,Dæhlie
First,Last
John Quincy,Adams
is ridiculous,but fun

在这种情况下,cut比grep更有意义:

ls -l | cut -f2 -d-

从输入中剪切第二个字段,使用“-”作为字段分隔符。另一个人的回答会正确处理某些情况我的答案不会,但对于一次性使用,一般来说,我觉得cut的语义更容易记住。

你想使用grep和ls吗,即使它们不是适合这项工作的工具?@其他人告诉我比sir更好的工具这将是一个解决方案,但我正在寻找一种方法,可以使用一些简单的命令来实现,例如使用管道:grepls-1
ls -l | cut -f2 -d-