varios una todos subdirectorios por para otro mover los listar directorios directorio crear copiar consola como comandos comando carpeta archivos bash temporary-directory

bash - una - mover todos los archivos de un directorio a otro en linux



¿Cómo crear un directorio temporal? (3)

Mi favorito de una línea para esto es

cd $(mktemp -d)

Utilizo para crear un tempfile , eliminarlo y volver a crearlo como un directorio:

tmpnam=`tempfile` rm -f $tmpnam mkdir "$tmpnam"

El problema es que otro proceso puede tener el mismo nombre X , si accidentalmente ejecuta tempfile después de un proceso rm -f X y justo antes de mkdir X


Para una solución más robusta, uso algo como lo siguiente. De esta forma, el directorio temporal siempre se eliminará después de que el script salga.

La función de limpieza se ejecuta en la señal de EXIT . Eso garantiza que siempre se invoca la función de limpieza, incluso si el script se cancela en alguna parte.

#!/bin/bash # the directory of the script DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # the temp directory used, within $DIR # omit the -p parameter to create a temporal directory in the default location WORK_DIR=`mktemp -d -p "$DIR"` # check if tmp dir was created if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then echo "Could not create temp dir" exit 1 fi # deletes the temp directory function cleanup { rm -rf "$WORK_DIR" echo "Deleted temp working directory $WORK_DIR" } # register the cleanup function to be called on the EXIT signal trap cleanup EXIT # implementation of script starts here ...

Directorio de script bash desde here .

Bash traps .


Use mktemp -d . Crea un directorio temporal con un nombre aleatorio y se asegura de que el archivo no exista. Sin embargo, debes recordar borrar el directorio después de usarlo.