为具有特定扩展名的每个文件创建目录时:
$ 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目录,并得到奇怪的目录名称。为什么这样以及如何使其发挥作用?
答案 0 :(得分:2)
像这样使用ls
的输出很容易出错。
您可以使用:
# grab all *.tex files in an array
arr=(*.tex)
# replace part after DOT and create directories
mkdir -p "${arr[@]//.*}"