我在 Mac 上有一个包含 2000 个 PDF 文件的文件夹。使用命令行,我想将每 100 个 PDF 移动到要在同一目录中创建的另一个文件夹中。这样我的主目录中就会有 20 个文件夹(名为 1、2 等),每个文件夹包含 100 个 PDF。我怎样才能做到这一点?
答案1
您可以使用,通过(位置参数范围)set
批量处理 100 个文件,同时递增计数器来创建目录:"${@:START:COUNT}"
shift 100
c
set -- *.pdf
c=1
while (($#)); do
mkdir ${c}
if [ $# -ge 100 ]; then
mv -- "${@:1:100}" ${c}
c=$((c+1))
shift 100
else
mv -- "${@}" ${c}
shift $#
fi
done
答案2
我刚刚为您的具体问题编写了下面的 bash 脚本。这可能对你有帮助。
#!/bin/bash
DEFAULT_DELIM_SIZE=100
num_of_total_file=$(ls | grep "pdf" | wc -l)
num_of_total_folder=$((num_of_total_file/DEFAULT_DELIM_SIZE))
echo "Total number of pdf files = $num_of_total_file"
echo "Total number of folder will generated if not exist $num_of_total_folder"
# create directories if not exist
for (( i = 0; i < $num_of_total_folder; i++ )); do
if [[ ! -d $i ]]; then
mkdir $i
fi
done
# file name format should be like this <arbitrary_numb>-<folder_num>.pdf
for file in *.pdf; do
prefix=$(echo $file | awk '{split($0, a, "-"); print a[2]}' | awk '{split($0, a, "."); print a[1]}')
if [[ -d $prefix ]]; then
mv $file $prefix
fi
done