我们在一个目录中保存了数千个文件。常见的模式是日期。例如:
foo-2013-09-01.gz
bar-2013-09-01.gz
fu-2013-09-02.gz
ba-2013-09-02.gz
cat-2013-09-01.gz
dog-2013-09-02.gz
dog-2013-09-03.gz
我们怎么才能在第一个破折号之前得到唯一文件名的列表呢?例如
foo
bar
fu
ba
cat
dog
我们不关心路径名,只关心第一部分(如果您可以看到type-date.filext格式)。我们打算在for循环中使用最终结果,该循环将为每个类型创建一个子目录,其中按日期包含所有其他文件。
5条答案
按热度按时间798qvoo81#
纯bash方式:
nwwlzxa72#
这可能适用于您(gnu-sed):
截断文件名,然后使用保留空间检查唯一键。如果密钥已经存在,则删除该行,否则将其添加到保留空间,然后打印唯一密钥。
ztmd8pv53#
假设您有文件列表:
tquggr8v4#
一种方法是:
为了避免解析ls输出,可以说:
ego6inou5#
使用
sed 's/-.*//'
: