Se você quiser mover ou copiar todos os arquivos para o mesmo diretório, poderá usar a opção -t
de cp
ou mv
, mas isso significará que você precisa digitar / fornecer cada nome de arquivo como um argumento. Funciona da seguinte maneira, com tantos arquivos quanto argumentos:
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 usando conclusão da guia do Bash .
Como alternativa, o seguinte script bash encontrará todos os arquivos em um diretório, dado como o primeiro argumento, e copiará os arquivos selecionados para o diretório de destino, dado como segundo argumento.
Ele verifica cada arquivo e pergunta se você deseja copiar esse arquivo. No final da seleção do arquivo, ele mostra uma lista de 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 que não há verificação de erros neste script sobre se o diretório de destino existe ou se você inseriu os argumentos corretos.