在目录中,我有数千个文件。
我使用以下bash片段,以便将这些数千个文件放入文件夹中,每个文件包含1000个文件,
我面临两个问题:
a)现在每个文件夹都有一个dir_的前缀,而我希望它有一个名字,它有6位数字,如果文件夹名称少于6位,则应该正确添加前导零。
b)当前脚本,将第一个文件夹放入最后一个文件夹,例如,我将dir_400325作为最后一个文件夹,在那里,我找到了我运行的bash脚本,以及dir_1000文件夹,这是第一个文件夹创建。我怎么能改变这个,所以第一个文件夹没有存储到最后一个?
#!/斌/庆典
c=0; d=1000; mkdir -p dir_${d}
for file in *
do
if [ $c -eq 1000 ]
then
d=$(( d + 1000 )); c=0; mkdir -p dir_${d}
fi
mv "$file" dir_${d}/
c=$(( c + 1 ))
done
答案 0 :(得分:1)
您可以使用%06d
和格式字符串生成带有前导零(bash-4.4$ d=1001
bash-4.4$ dir_name=$(printf "/path/to/%06d" $d)
bash-4.4$ echo $dir_name
/path/to/001001
)的6位数目录名称,在shell中演示:
#!/bin/bash
c=0
d=1000
dir_name=$(printf "/path/to/%06d" $d)
mkdir -p $dir_name
for file in *
do
if [ $c -eq 1000 ]
then
c=0
d=$(( d + 1000 ))
dir_name=$(printf "/path/to/%06d" $d)
mkdir -p $dir_name
fi
if [[ -f "$file" ]]
then
mv "$file" $dir_name
c=$(( c + 1 ))
fi
done
使用绝对路径可能有助于确保文件最终位于您预期的位置,而不是当前工作目录的某个子文件夹中。
rm ~/.why3.conf
why3 config --detect