如果要将所有文件移动或复制到同一目录,则可以使用或的-t
选项,但这意味着您必须输入/提供每个文件名作为参数。它以以下方式工作,并根据需要使用尽可能多的文件作为参数:cp
mv
cp -t /destination/directory/ file1 file2 file3
要么
mv -t /destination/directory/ file1 file2 file3
这非常费力,但是使用Bash的制表符完成功能可以使键入文件名更加容易。
或者,以下bash脚本将在目录中找到所有文件(作为第一个参数给出),并将所选文件复制到目标目录中(作为第二个参数给出)。
它检查每个文件,并询问您是否要复制该文件。在文件选择的最后,它显示了一个选定文件的列表,并询问您是否要将它们复制到目标目录:
#!/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[@]}"
警告该脚本中没有错误检查目标目录是否存在,或者您输入了正确的参数。