为每个具有特定扩展名的文件创建目录时:
$ ls
a.ttt b.ttt c.ttt d.ttt e.ttt
$ mkdir $(ls *.ttt | cut -f 1 -d ".")
$ ls
a a.ttt b b.ttt c c.ttt d d.ttt e e.ttt
...一切正常。但是,如果我对.tex文件执行此操作,则会得到以下结果:
$ ls
a.tex b.tex c.tex d.tex e.tex
$ mkdir $(ls *.tex | cut -f 1 -d ".")
$ ls
?[00;32mb ?[00;32mc ?[00;32md ?[00;32me ?[0m?[00;32ma a.tex b.tex c.tex d.tex e.tex
我只是想清理我的 latex 目录,却得到了奇怪的目录名。为什么会这样以及如何使其起作用?
最佳答案
像这样使用ls
的输出很容易出错。
您可以使用:
# grab all *.tex files in an array
arr=(*.tex)
# replace part after DOT and create directories
mkdir -p "${arr[@]//.*}"