Esto se moverá foo.c
al nuevo directorio baz
con el directorio padre bar
.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
La -p
opción mkdir
creará directorios intermedios según sea necesario.
Sin-p
todos los directorios en el prefijo de ruta ya debe existir.
Todo lo que está dentro de los backticks ``
se ejecuta y la salida se devuelve en línea como parte de su comando.
Como mkdir
no devuelve nada, solo la salida de echo $_
se agregará al comando.
$_
hace referencia al último argumento al comando ejecutado anteriormente.
En este caso, devolverá la ruta a su nuevo directorio ( ~/bar/baz/
) pasado al mkdir
comando.
Descomprimí un archivo sin dar un destino y quería mover todos los archivos excepto
demo-app.zip
de mi directorio actual a un nuevo directorio llamado
demo-app
.
La siguiente línea hace el truco:
mv `ls -A | grep -v demo-app.zip` `mkdir -p demo-app && echo $_`
ls -A
devuelve todos los nombres de archivo, incluidos los archivos ocultos ( excepto los implícitos .
y..
).
El símbolo de canalización |
se utiliza para canalizar la salida del ls
comando grep
( una utilidad de búsqueda de texto sin formato en la línea de comandos ).
El -v
indicador dirige grep
a buscar y devolver todos los nombres de archivo, excepto demo-app.zip
.
Esa lista de archivos se agrega a nuestra línea de comandos como argumentos de origen para el comando mover mv
. El argumento objetivo es la ruta al nuevo directorio pasado a mkdir
referenciado usando $_
y salida usando echo
.