Usando Bash
Digamos que tengo un montón de archivos colocados aleatoriamente en un directorio principal ~/src
, quiero tomar todos los archivos que coinciden con un determinado sufijo y moverlos (o copiarlos) a un ~/dist
directorio.
Asumamos para este propósito que todos los nombres de archivo tienen esta convención de nomenclatura:
<filename_prefix>.<filename_suffix>
Descubrí que esta era una forma rápida de obtener todos los archivos con un particular filename_suffix
y ponerlos en una carpeta dist:
mkdir ~/dst
find source -name "*.xxx" -exec mv -i {} -t ~/dst \;
Ahora un paso más allá ... ¿cómo puedo usar la salida de find, en este caso filename
, y usar filename_prefix
para generar un directorio con el mismo nombre ~/dist
y luego mover (o copiar) todos los archivos con ese prefijo en el directorio apropiado?
mkdir ~/dst
find source -name "*.xrt,*.ini,*.moo" -exec mv -i {} -t ~/dst \;
Esencialmente, ¿cómo cambio el comando anterior (o tal vez uso otro comando) para crear una estructura como esta?
(SALIDA)
~/dist/people/people.xrt
~/dist/games/games.xrt
~/dist/games/games.moo
~/dist/games/games.ini
~/dist/monkeys/monkeys.ini
~/dist/monkeys/monkeys.xrt
de un árbol de directorios como este?
(ENTRADA)
~/src/xrt/people.xrt
~/src/xrt/games.xrt
~/src/conf/games.ini
~/src/pack/monkeys.xrt
~/src/e344/games.moo
~/src/e344/monkeys.moo
~/src/en-us/monkeys.ini
fuente
shopt -s globstar
, mira mi edición. Si solo hay dos niveles, puede usar*/*.*
y el fragmento funcionará en cualquier shell.hacer trampa encontrar la línea de comando:
En realidad, una solución para llamar a bash script en find LOL.
= P
fuente
happy rm -rf /
! Este tipo de código merece un -1.Yay" rm -rf / "Rox0r.avi
, nuevamente hay un problema ...-exec bash -c 'command which uses "$1"' bash '{}' ';'
. Bueno, de todos modos no tiene sentido.