หากคุณต้องการย้ายหรือคัดลอกไฟล์ทั้งหมดไปยังไดเรกทอรีเดียวกันคุณสามารถใช้-t
ตัวเลือกของcp
หรือmv
แต่จะหมายความว่าคุณต้องพิมพ์ / ใส่ชื่อไฟล์แต่ละไฟล์เป็นอาร์กิวเมนต์ มันทำงานในลักษณะดังต่อไปนี้มีไฟล์มากที่สุดเท่าที่เป็นข้อโต้แย้งตามที่คุณต้องการ:
cp -t /destination/directory/ file1 file2 file3
หรือ
mv -t /destination/directory/ file1 file2 file3
นี่คือลำบากมาก แต่พิมพ์ชื่อไฟล์ที่สามารถทำง่ายขึ้นโดยใช้เสร็จแท็บทุบตีของ
อีกทางหนึ่งสคริปต์ทุบตีต่อไปนี้จะค้นหาไฟล์ทั้งหมดในไดเรกทอรีที่กำหนดเป็นอาร์กิวเมนต์แรกและคัดลอกไฟล์ที่เลือกไปยังไดเรกทอรีปลายทางที่กำหนดเป็นอาร์กิวเมนต์ที่สอง
มันตรวจสอบแต่ละไฟล์และถามว่าคุณต้องการคัดลอกไฟล์นั้นหรือไม่ ในตอนท้ายของการเลือกไฟล์มันจะแสดงรายการไฟล์ที่เลือกและถามว่าคุณต้องการคัดลอกไฟล์ไปยังไดเรกทอรีปลายทางหรือไม่:
#!/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[@]}"
ได้รับการเตือนว่าไม่มีการตรวจสอบข้อผิดพลาดในสคริปต์นี้ว่ามีไดเรกทอรีปลายทางอยู่หรือคุณป้อนอาร์กิวเมนต์ที่ถูกต้อง