すべてのファイルを同じディレクトリに移動またはコピーする-t
場合は、cp
またはのオプションを使用できますmv
が、これは、各ファイル名を引数として入力または指定する必要があることを意味します。これは次のように機能し、必要な数のファイルを引数として使用します。
cp -t /destination/directory/ file1 file2 file3
または
mv -t /destination/directory/ file1 file2 file3
これはかなり面倒ですが、Bashのタブ補完を使用すると、ファイル名の入力が簡単になります。
または、次のbashスクリプトは、最初の引数として指定されたディレクトリ内のすべてのファイルを検索し、2番目の引数として指定された宛先ディレクトリに選択したファイルをコピーします。
各ファイルをチェックし、そのファイルをコピーするかどうかを尋ねます。ファイル選択の最後に、選択したファイルのリストが表示され、それらを宛先ディレクトリーにコピーするかどうか尋ねられます。
#!/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[@]}"
このスクリプトには、宛先ディレクトリが存在するかどうか、または正しい引数を入力したかどうかに関するエラーチェックがないことに注意してください。