您能否建议我在 PhotoRec 创建了一堆这样的目录后要执行哪些步骤
RECUP_DIR.1
RECUP_DIR.2
RECUP_DIR.3
RECUP_DIR.4
这个文件夹有什么含义吗?它们只是随机名称吗?
例如,我希望所有图片(png/jpeg/类似扩展名)都放在同一个文件夹中,而所有 DOC 图像都放在另一个文件夹中,等等
答案1
解决方案 1
创建一个名为MergeByExt.sh
if [ "$#" -ne 2 ] || ! [ -d "$1" ]; then
echo "Usage: $0 DIRECTORY EXTENSION" >&2
exit 1
fi
folder=$1
ext=$2
mkdir $2
exts=$(find $folder -type f | grep $2)
for f in $exts; do
mv $f $2
echo $f moved to $2
done
然后你可以像这样调用它(例如将所有 MP3 文件合并到一个文件夹中)
MergeByExt.sh /path/to/photorec/recover/root/folder .mp3
该文件夹将在您执行脚本的路径中创建
解决方案 2
此解决方案将在每个 RECUP_DIR.X 目录内创建一个包含每个扩展的文件夹
像这样
RECUP_DIR.1\txt
RECUP_DIR.1\png
RECUP_DIR.1\jpg
RECUP_DIR.1\doc
将此文本保存至通过扩展
dir=$1
if [ "x$dir" != "x" -a -d "$dir" ] ; then
cd "$dir"
fi
dir=$(pwd)
basedir=$(basename "$dir")
exts=$(find . -mindepth 1 -maxdepth 1 -type f -print | grep '^\./.*\.' | sed 's/^.*\.\([^.][^.]*\)$/\1/' | sort -u)
for e in $exts; do
# Skip extension if this directory is already named by extension.
if [ "$basedir" = "$e" ] ; then
continue
fi
mkdir "$e"
for file in *.$e; do
mv "$file" "$e"
done
done
您可以转到 PhotoRec 文件夹恢复文件的主文件夹并运行此命令
find . -depth -type d -print -exec /path/to/script/ByExtension.sh {} \;