mkdir 在 *.tex 文件上与 cut 一起使用时会生成错误的目录名称
mkdir makes wrong directory names when used with cut on *.tex files
当为具有特定扩展名的每个文件创建目录时:
$ 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[@]//.*}"
当为具有特定扩展名的每个文件创建目录时:
$ 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[@]//.*}"