Si desea mover o copiar todos los archivos al mismo directorio, puede usar la -t
opción de cp
o mv
, pero esto significará que debe escribir / suministrar cada nombre de archivo como argumento. Funciona de la siguiente manera, con tantos archivos como argumentos desee:
cp -t /destination/directory/ file1 file2 file3
o
mv -t /destination/directory/ file1 file2 file3
Esto es bastante laborioso, pero escribir los nombres de los archivos puede ser más fácil usando la finalización de pestañas de Bash .
Alternativamente, el siguiente script bash encontrará todos los archivos en un directorio, dado como el primer argumento, y copiará los archivos seleccionados en el directorio de destino, dado como el segundo argumento.
Comprueba cada archivo y le pregunta si desea copiar ese archivo. Al final de la selección de archivos, muestra una lista de los archivos seleccionados y le pregunta si desea copiarlos en el directorio de destino:
#!/bin/bash
directory=$1
destination=$2
selected_files=()
for f in ${directory}/*
do
if [[ -f $f ]]
then
while true
do
read -p "Would you like to copy ${f}? y/n: " choice
case $choice in
y|Y) selected_files+=("$f");
break ;;
n|N) echo "${f} will not be copied.";
break ;;
*) echo "Invalid choice, enter y/n: " ;;
esac
done
fi
done
echo "The following files will be copied to ${destination}."
for file in "${selected_files[@]}"
do
echo "$file"
done
while true
do
read -p "Are these the correct files? y/n: " confirm
case $confirm in
y|Y) break ;;
n|N) echo "Exiting filechooser"; exit 1 ;;
*) echo "Invalid choice, enter y/n: " ;;
esac
done
cp -t "$destination" "${selected_files[@]}"
Tenga en cuenta que no hay errores al verificar en este script si el directorio de destino existe o si ha ingresado los argumentos correctos.