Se si desidera spostare o copiare tutti i file nella stessa directory, è possibile utilizzare l' -t
opzione di cp
o mv
, ma ciò significa che è necessario digitare / fornire ciascun nome file come argomento. Funziona nel modo seguente, con tutti i file quanti argomenti desideri:
cp -t /destination/directory/ file1 file2 file3
o
mv -t /destination/directory/ file1 file2 file3
Questo è abbastanza laborioso, ma digitare i nomi dei file può essere semplificato usando il completamento della scheda di Bash .
In alternativa, il seguente script bash troverà tutti i file in una directory, forniti come primo argomento, e copia i file selezionati nella directory di destinazione, dati come secondo argomento.
Controlla ogni file e chiede se si desidera copiare quel file. Alla fine della selezione dei file mostra un elenco di file selezionati e chiede se si desidera copiarli nella directory di destinazione:
#!/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[@]}"
Tieni presente che in questo script non è presente alcun errore per verificare se esiste la directory di destinazione o se hai inserito gli argomenti corretti.