我已经恢复了旧的已删除文件!这个过程非常成功,恢复了几年前的文件。
现在的问题是检查所有恢复的 400000 个 JPG 类型的文件。
为了解决这个问题,我已经根据文件大小分离文件,并将符合条件的文件存储在不同的目录中:
find /path/to/files/ -size +100k -print0 | xargs -0 cp --target-directory=/path/to/filtered/files/
由于需要远程分析文件,我准备了一个网页来显示所有文件,以便将它们保存在本地。此网页将通过导航箭头一次显示 20 个文件!
我的问题是如何将 400000 个文件拆分成每个包含 20 个文件的子目录,并按顺序重命名文件:
重命名为
000001.jpg
000002.jpg
...
000020.jpg
通过创建子目录移动到子目录
page_0001
重复此操作,直到处理完所有 400000 个!
page_0002/000021.jpg
page_0002/000022.jpg
...
page_0002/000040.jpg
答案1
我有同样的问题。我用 BASH 编写了此代码,并且对我有用。
根据您的需求进行更改:
#/bin/bash
target_prefix=page
SOURCE_DIR=YOUR_DIR #Change this to source dir
N=0
Z=0
for entry in $SOURCE_DIR/*
do
N=$((N+1))
Z=$((Z+1))
if [ "$N" == "1" ]; then
mkdir $SOURCE_DIR/$target_prefix-$Z
DIR="$SOURCE_DIR/$target_prefix-$Z"
fi
echo "Move image $entry number $N to dir $DIR"
mv $entry $DIR/$Z.jpg #Change to your file extension
if [ "$N" == "20" ]; then
N=0
fi
done
希望这个能起作用。
答案2
以下 Bash 脚本应该可以解决问题,但不保证一定有效。
i=1
for f in *
do
fn=$(printf "%.6d" $i).jpg
dn=page_$(printf "%.4d" $(($i%20)))
mkdir -p $dn
cp $f "$dn/$fn"
i=$(($i+1))
done