Se você deseja mover ou copiar todos os arquivos para o mesmo diretório, pode usar a -t
opção cp
or mv
, mas isso significa que você deve digitar / fornecer cada nome de arquivo como argumento. Funciona da seguinte maneira, com tantos arquivos quantos argumentos você desejar:
cp -t /destination/directory/ file1 file2 file3
ou
mv -t /destination/directory/ file1 file2 file3
Isso é bastante trabalhoso, mas a digitação dos nomes dos arquivos pode ser facilitada com a conclusão da guia do Bash .
Como alternativa, o script bash a seguir encontrará todos os arquivos em um diretório, fornecido como o primeiro argumento, e copiará os arquivos selecionados no diretório de destino, como o segundo argumento.
Ele verifica cada arquivo e pergunta se você deseja copiar esse arquivo. No final da seleção de arquivos, ele mostra uma lista dos arquivos selecionados e pergunta se você deseja copiá-los para o diretório 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[@]}"
Esteja avisado de que não há erro ao verificar neste script se o diretório de destino existe ou se você inseriu os argumentos corretos.