Comando
Este comando fue probado en un shell bash.
for x in *;do if [[ -f $x ]];then mkdir newdir;mv "$x" newdir/.;mv newdir "${x%.*}";fi;done
Explicación
El código que se muestra a continuación no son comandos necesarios que pueda ejecutar. Más bien, lo que se muestra es una explicación de varias partes del código mostrado arriba.
Recorre todos los nombres de archivos del directorio actual.
for x in *;do ... done
Sólo hace archivos regulares. (Omita los directorios).
if [[ -f $x ]];then ... fi;
Hacer un nuevo directorio newdir
.
mkdir "newdir";
Mover archivo x
al nuevo directorio newdir
.
mv "$x" newdir/.;
Cambiar el nombre de newdir
al nombre del nuevo directorio deseado. (Establezca newdir
al nombre del archivo x
después de eliminar el último .
y todos los personajes que le siguen).
mv newdir "${x%.*}";
Comentarios
Si el directorio deseado ya existe, entonces el newdir
(que contiene el archivo) se moverá al directorio deseado. Por ejemplo, si el archivo 123.mp4
y el directorio 123
ambos ya existen, entonces el archivo 123.mp4
terminará en 123/newdir
. Puede comprobar si esto ha ocurrido introduciendo el comando que se indica a continuación.
find . -name newdir
Por ejemplo, si 123/newdir/123.mp4
existía, entonces aparecería la siguiente salida.
./123/newdir
0 votos
codereview.stackexchange.com/questions/234719