创建一个 shell 脚本 (sorter.sh),该脚本循环遍历用户使用内置“read”给定的目录中的所有项目。此输入需要能够接受使用波浪号的目录。脚本必须验证输入并使用循环以仅在验证完成后允许脚本继续。它必须验证给定的目录是一个目录。
该脚本在遍历目录中的项目时,应该测试这些项目以查看它们是目录还是文件。如果它们是目录,则需要重命名它们以将当前日期添加到目录名称的末尾。如果它们是文件,则需要将它们复制到用户指定的另一个目录中,并且强制测试目的必须是路径(~/Desktop/sorted)。请注意,您不能将此目录路径硬编码到程序中,您必须使用从用户那里获取的变量。在这个其他目录中,您的脚本还必须创建以“cis90-”开头和 a 到 z 结尾的目录。所以前三个目录将是“cis90-a”、“cis90-b”、“cis90-c”。被复制的文件需要按字母顺序复制到文件夹中。所有以字母“a”开头的文件进入“cis90-a”文件夹,以字母“b”开头的文件进入“cis90-b”文件夹,以字母“c”开头的文件进入“cis90”文件夹-c”目录。为了在你到达“c”后节省一些额外的工作,所有额外的文件都应该放在“cis90-d”目录中。
我已经到了需要检查目录和文件项目的地方。不知道如何将文件放入 cis90 文件夹。这是我到目前为止所拥有的。
编辑:我现在正在研究使用 case 命令来分隔目录和文件。然后将文件复制到各自的文件夹中。
#!/bin/bash
DATE=$(date +%m%d%Y)
read -p "Enter directory for items to be sorted: " dir
eval dir=$dir
while [ -z "$dir" ]; do
read -p "Empty entry. Enter directory: " dir
done
while [ ! -d "$dir" ]; do
read -p "Invalid entry. Enter directory: " dir
done
read -p "Enter directory for cis90 directories: " cis
eval cis=$cis
for j in $cis; do
mkdir $cis/cis90-{a..z}
done
for i in $dir/*; do
if [ -d $i ]; then
echo "$i is a directory."
fi
done