我在目录中有三个文件,其结构如下:
file.exe.trace, file.exe.trace.functions and file.exe.trace.netlog
我想知道如何将file.exe作为文件名? 在其他世界我需要获得具有.trace扩展名的文件名?我应该注意,你可以看到所有文件都有.trace部分。
答案 0 :(得分:2)
如果$FILENAME
有名称,则可以从${FILENAME%%.trace*}
for FILENAME in *.trace; do
echo ${FILENAME%%.trace*}
done
答案 1 :(得分:1)
您还可以使用basename
:
for f in *.trace; do
basename "$f" ".trace"
done
更新:除.trace
之外的.trace.functions
之外,之前的广告系列文件还有额外扩展程序,但以下sed
会执行以下操作:
sed -r 's_(.*)\.trace.*_\1_' <(ls -c1)
您也可以在for循环中使用它:
for f in *.trace*; do
sed -r 's_(.*)\.trace.*_\1_' <<< "$f"
done
答案 2 :(得分:0)
尝试:
for each in *exe*trace* ; do echo $each | awk -F. '{print $1"."$2}' ; done | sort | uniq