我有一个目录,其中所有文件都以.ear
.我想删除.ear
并仅保留文件名。我可以吗?
当我尝试时
cd /path/
ls >> file
然后在输出文件中,file
存储的目录名称包含所有文件,包括.ear
末尾的文件。我想删除.ear
并只保留该文件的名称。
答案1
/path
要在目录中创建文件名以 结尾的文件名列表.ear
,同时删除该后缀:
for name in /path/*.ear; do
basename "$name" .ear
done >list
该basename
实用程序返回路径名的文件名部分,如果提供了第二个参数,则该参数将被视为应从每个名称末尾删除的字符串。
在上面的循环中,我们仅迭代与模式匹配的文件/path/*.ear
,提取不带后缀的文件名.ear
,并将列表写入名为 的文件list
。
这也将正确处理包含换行符的文件名,例如文件名
$'my.left.ear\ncollection 1.ear'
答案2
你要:
ls *.ear | sed 's/\.ear$//' >list.txt
如果您不喜欢使用输出,ls
您也可以这样做:
printf "%s\n" *.ear | sed 's/\.ear$//' >list.txt
printf
在不是内置的shell 中(或使用ls
上面的形式),理论上您可以达到参数数量的限制,但如果这些 EAR 文件是我熟悉的文件,您将不会获得数千个。