команда разворачивания "xvf" работает только для отдельных файлов
, что делает необходимым использование цикла :
for file in ./*.tar; do tar xvf "$file"; done
Запустите zsh . Поместите автозагрузку zmv
в ваш ~ / .zshrc
(или, чтобы попробовать, введите это в командной строке zsh). Затем вы можете использовать функцию zmv
для перемещения или копирования файлов.
mv -Q '**/*(.)' '$f:e/$f:t'
Объяснение: первый операнд - это шаблон файлов для перемещения, второй - шаблон замены. ** /
рекурсивно сопоставляет файлы в подкаталогах. (.)
- квалификатор glob , он ограничивает совпадения обычными файлами (поэтому мы не рискуем сопоставить каталоги). В шаблоне замены $ f
обозначает исходный путь, модификатор e
сохраняет только расширение, а t
сохраняет полное базовое имя.
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 {} +
дополнительно к @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 {} +