Macには2000個のPDFファイルを含むフォルダがあります。コマンドラインを使用して、100個のPDFごとに同じディレクトリに作成される別のフォルダに移動したいと思います。これにより、私のホームディレクトリにそれぞれ100個のPDFを含む20個のフォルダ(1、2などの名前)があります。どうすればいいですか?
答え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