GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay alguna manera de hacer que mv cree el directorio al que se moverá si no existe?

¿Qué tal este one-liner (en bash):

mkdir --parents ./some/path/; mv yourfile.txt $_

Desglosando eso:

mkdir --parents ./some/path

crea el directorio (incluidos todos los directorios intermedios), después del cual:

mv yourfile.txt $_

mueve el archivo a ese directorio ($_ se expande al último argumento pasado al comando de shell anterior, es decir:el directorio recién creado).

No estoy seguro de hasta qué punto funcionará esto en otros shells, pero podría darle algunas ideas sobre qué buscar.

Aquí hay un ejemplo usando esta técnica:

$ > ls
$ > touch yourfile.txt
$ > ls
yourfile.txt
$ > mkdir --parents ./some/path/; mv yourfile.txt $_
$ > ls -F
some/
$ > ls some/path/
yourfile.txt

mkdir -p `dirname /destination/moved_file_name.txt`  
mv /full/path/the/file.txt  /destination/moved_file_name.txt

Guardar como un script llamado mv o mv.sh

#!/bin/bash
# mv.sh
dir="$2"
tmp="$2"; tmp="${tmp: -1}"
[ "$tmp" != "/" ] && dir="$(dirname "$2")"
[ -a "$dir" ] ||
mkdir -p "$dir" &&
mv "[email protected]"

O colóquelo al final de su archivo ~/.bashrc como una función que reemplaza el mv predeterminado en cada nueva terminal. El uso de una función le permite a bash mantenerla en la memoria, en lugar de tener que leer un archivo de script cada vez.

function mv ()
{
    dir="$2"
    tmp="$2"; tmp="${tmp: -1}"
    [ "$tmp" != "/" ] && dir="$(dirname "$2")"
    [ -a "$dir" ] ||
    mkdir -p "$dir" &&
    mv "[email protected]"
}

Estos se basan en la presentación de Chris Lutz.


Linux
  1. ¿Cuál es la mejor manera de contar el número de archivos en un directorio?

  2. ¿La forma más rápida de extraer un Iso?

  3. ¿Forma automatizada de crear un árbol de directorio?

  4. ¿Hay alguna manera de inspeccionar el rpath actual en Linux?

  5. open() en Python no crea un archivo si no existe

Cómo usar el comando mkdir para hacer o crear un directorio de Linux

Cree accesos directos a los directorios de uso frecuente en Linux

Un comando para crear un directorio y un archivo dentro de él comando de Linux

¿Hay alguna manera de obtener el archivo jar del servidor más reciente a través de una URL que no cambia?

¿Hay alguna manera de hacer que Nano admita el autocompletado y el cierre automático de corchetes?

¿Cómo hago para que find excluya la carpeta en la que busca?