2 votos

script para mover los archivos bajo su nombre de primera letra

Tengo muchos archivos (más de 1000) en un solo directorio, y me gustaría organizarlos en subdirectorios, según su primera letra. Así que tengo 200 archivos que comienzan con A, y me gustaría moverlos al subdirectorio "A", luego todos los archivos "B", etc., etc.

¿Cómo se hace?

5voto

Jax Puntos 23

En una terminal: cd en el directorio en cuestión, y luego

for x in `ls -1 | sed -e 's/^\(.\).*/\1/' | sort -u`; do
mkdir $x && mv -i ${x}?* $x
done

Esto supone que ningún archivo tiene un nombre de un solo carácter antes de empezar. Si lo tienen, podrías apartarlos antes de ejecutar el procedimiento anterior:

mkdir singles && mv ? singles

y trasladarlos después a sus destinos correspondientes.

Editar: Consulte los comentarios más abajo para ver algunas advertencias. Si tiene problemas con líneas de comando demasiado largas, puede sustituir la segunda línea por

mkdir $x && find . -maxdepth 1 -name "${x}?*" -exec mv -i {} $x \;

2voto

OJ. Puntos 16939

Aquí tienes una frase de Ruby:

ruby -e 'require "FileUtils"; Dir["*"].each { |f| next if File.directory?(f); d = f[0]; Dir.mkdir d rescue nil; FileUtils.mv(f,d) }'

Básicamente itera sobre todos los archivos, crea los directorios si es posible y mueve los archivos a él después.

Sólo hay que ejecutar esta línea desde el directorio.

0voto

Esto también funcionaría si los nombres de los archivos comienzan con caracteres multibyte (como Ä o あ):

ls | iconv -f utf8-mac -t utf-8 | LC_CTYPE=UTF-8 cut -c1 | uniq | while IFS= read -r l; do
  f=("$l"*)
  mkdir -- "$l"
  mv -- "${f[@]}" "$l"
done

iconv -f utf8-mac -t utf-8 convierte el texto de una forma parcialmente descompuesta utilizada por HFS+ a una forma precompuesta. Véase Codificaciones de texto en VFS o esta pregunta . LC_CTYPE=UTF-8 hace cut -c1 consideran los caracteres multibyte como caracteres simples.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X