我有大量文件,我试图按字母顺序将它们组织成三个文件夹。我正在尝试将一个 bash 脚本放在一起,该脚本能够获取文件的第一个字母,然后根据该第一个字母将其移动到文件夹中。
例如:
文件 -> 文件夹名称
苹果-> AG
香蕉 -> AG
番茄 -> HT
斑马-> UZ
任何提示将不胜感激!蒂亚!
我有大量文件,我试图按字母顺序将它们组织成三个文件夹。我正在尝试将一个 bash 脚本放在一起,该脚本能够获取文件的第一个字母,然后根据该第一个字母将其移动到文件夹中。
例如:
文件 -> 文件夹名称
苹果-> AG
香蕉 -> AG
番茄 -> HT
斑马-> UZ
任何提示将不胜感激!蒂亚!
#!/bin/bash
dirs=(A-G H-T U-Z)
shopt -s nocasematch
for file in *
do
for dir in "${dirs[@]}"
do
if [[ $file =~ ^[$dir] ]]
then
mv "$file" "$dir"
break
fi
done
done
添加我的代码 - 这是基于 Dennis Williamson 的 99% - 我刚刚添加了一个 if 块以确保您没有将目录移动到目标目录中,并且我希望每个字母都有一个目录。
#!/bin/bash
dirs=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
shopt -s nocasematch
for file in *
do
for dir in "${dirs[@]}"
do
if [ -d "$file" ]; then
echo 'this is a dir, skipping'
break
else
if [[ $file =~ ^[$dir] ]]; then
echo "----> $file moves into -> $dir <----"
mv "$file" "$dir"
break
fi
fi
done
done