photorec
復元されたファイルを含む2481個のフォルダを含むデータ回復プロセスのフォルダがあります。
フォルダ名の順序はrecup_dir.1、recup_dir.2 ... recup_dir.2481です。
以下を使用して、このフォルダのすべての拡張子のリストを取得しました。
find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u
photorecorg
したがって、上記のコマンドで取得した各拡張子に対応するフォルダのリストを含む別のディレクトリを作成しました。
mkdir 7z arj asf avi bat blend bmp bz2 cdr DOC docx flac flv gif gz html jpg mobi mov mp3 mp4 mpg ods odt ogg pdf php png ppt ps psd rar rtf svg swf tar tif ttf wav wmf xcf xls xlsx xz zip
これで、フォルダ内のファイルをphotorec
次の拡張フォルダにコピーする必要がありますphotorecorg
。
想像find . -print | xargs cp $0 ../photorecorg/<extension>
各拡張ディレクトリにファイルを見つけてコピーできるコマンドは何ですか?
答え1
photorec='/pathto/your_photo_recovery_folder'
photorecorg='/pathto/your_photo_recorg_folder'
cd "$photorec" && \
EXTDIR="$photorecorg" find . -type f -name '*.?*' -exec sh -c '
for f
do
dest=${EXTDIR}/${f##*.}
cp -p "$f" "$dest/."
done
' x {} +
答え2
走る扱いにくい。autoload zmv
直接入力してください~/.zshrc
(または試してみるには、zshコマンドラインに入力してください)。その後利用できますzmv
機能ファイルを移動またはコピーします。
mv -Q '**/*(.)' '$f:e/$f:t'
説明: 最初のオペランドは移動するファイルのモードで、2 番目のオペランドは代替モードです。**/
サブディレクトリのファイルを再帰的に一致させます。(.)
はいグローバル予選、一致を通常のファイルに制限します(したがって、ディレクトリ一致のリスクはありません)。交換モードでは、$f
元のパスを指定し、修飾子 e
拡張子のみが保持され、完全なデフォルトt
名は保持されます。
答え3
@user218374に加えてmkdir -p。
photorec='/media/TiloDataRecoveryRAW'
photorecorg='/media//TiloDataRecoveryOrg'
cd "$photorec" && \
EXTDIR="$photorecorg" find . -type f -name '*.?*' -exec sh -c '
for f
do
dest=${EXTDIR}/${f##*.}
mkdir -p "$dest" && cp -p "$f" "$dest/."
done
' x {} +