Wenn Sie alle Dateien in dasselbe Verzeichnis verschieben oder kopieren möchten, können Sie die -t
Option cp
oder verwenden mv
. Dies bedeutet jedoch, dass Sie jeden Dateinamen als Argument eingeben / angeben müssen. Es funktioniert folgendermaßen mit so vielen Dateien wie Argumenten, wie Sie möchten:
cp -t /destination/directory/ file1 file2 file3
oder
mv -t /destination/directory/ file1 file2 file3
Dies ist ziemlich mühsam, aber das Eingeben der Dateinamen kann durch die Vervollständigung der Registerkarte von Bash vereinfacht werden .
Alternativ findet das folgende Bash-Skript alle Dateien in einem Verzeichnis, das als erstes Argument angegeben wurde, und kopiert die ausgewählten Dateien in das Zielverzeichnis, das als zweites Argument angegeben wird.
Es überprüft jede Datei und fragt, ob Sie diese Datei kopieren möchten. Am Ende der Dateiauswahl wird eine Liste der ausgewählten Dateien angezeigt und Sie werden gefragt, ob Sie sie in das Zielverzeichnis kopieren möchten:
#!/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[@]}"
Seien Sie gewarnt, dass in diesem Skript keine Fehlerprüfung erfolgt, ob das Zielverzeichnis vorhanden ist oder ob Sie die richtigen Argumente eingegeben haben.