mkdir fait des noms de répertoires incorrects lorsqu’il est utilisé avec les fichiers cut. * .tex

Quand créer des répertoires pour chaque fichier avec une certaine extension:

$ 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 

… tout fonctionne très bien. Cependant, si je le fais pour les fichiers .tex, j’obtiens les résultats suivants:

  $ 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 

Je voulais juste nettoyer mon répertoire latex et obtenir des noms de répertoires étranges. Pourquoi est-ce et comment le faire fonctionner?

Il est enclin à l’erreur d’utiliser ls comme ceci.

Vous pouvez utiliser:

 # grab all *.tex files in an array arr=(*.tex) # replace part after DOT and create directories mkdir -p "${arr[@]//.*}"