Предполагая, что у вас нет имен файлов с символами новой строки:
find /html/car_images/inventory/ -type f -iname \*.jpg -mtime -4 \
-exec sh -c 'echo "${1%/*}"' _ {} \; | sort -u | \
xargs -d $'\n' -I{} rm -r {}/thumbnails
Расширение параметра, $ {1% / *}
извлекает часть без имени файла из каждой найденной записи
sort -u
сортирует, а затем делает записи уникальными, чтобы у нас не было дубликатов
xargs -I {} rm -r {} / эскизы
добавляет эскизов
в конец, а затем удаляет результирующий каталог
В bash простой цикл с некоторыми манипуляциями со строкой
for f in ./*.ZIP.*
do
mv "$f" "${f%.*}"
done
«$ {f%. *}»
удаляет все, что находится после последнего .
(включительно) в строке в $ f
.
for filename in $(find . -name '*ZIP*'); do mv $filename $(echo $filename | sed 's|\(.*\)\.ZIP.*|\1.ZIP|g') ; done
В команде perl
, основанной на rename
:
$ touch 08242016G0040156.ZIP.20160907141452 09042016SHOC0003.ZIP.20160904044504
$ rename -n 's/\.\d+$//' *ZIP*
rename(08242016G0040156.ZIP.20160907141452, 08242016G0040156.ZIP)
rename(09042016SHOC0003.ZIP.20160904044504, 09042016SHOC0003.ZIP)
-n
опция предназначена для пробного запуска. Если переименование проходит нормально, удалите ее для реального переименования
Если файлы могут находиться в нескольких подкаталогах, используйте find
find -name '*ZIP*' -exec rename -n 's/\.\d+$//' {} +
Если после последнего идут символы, отличные от цифр.
используйте
rename -n 's/\.[^.]+$//' *ZIP*