whereis(1) не подходит для вашей цели, поскольку это не инструмент поиска имени пути по умолчанию.
Как отметил Гилл в своем ответе, вы можете используйте whereis(1) для этого задания, но я хочу сделать небольшое, но значительное улучшение1:
find [PATH...] -depth -path '*gmai*' -print # -delete
Объяснение:
find [PATH...] проходит через все файлы и подкаталоги под каждым PATH или текущими рабочими каталогами, если путь не указан, и печатает все совпадения (по умолчанию). -path PATTERN соответствует полному пути к PATTERN, используя globbing if any, поэтому *gmai* соответствует всем именам путей с инфикс gmai. -delete удаляет все согласованные пути (и переопределяет действие по умолчанию для их печати). -depth указывает find на соответствие детям перед родителями, т.е. е. записи каталога перед самими родительскими каталогами. Необходимо удалить детей перед родителями, потому что в семантике файловой системы Unix можно удалить только пустые каталоги. -print печатает все согласованные пути. Используйте это, чтобы проверить результат перед фактическим удалением. Комментарий в команде -delete (удалив # перед ним), чтобы фактически удалить их.Если все поисковые места, которые вы собираетесь удалить, появятся в индексе поиска mlocate.db(5), вы можете использовать его для более быстрого поиска:
locate '/your/parent/path/*gmai*'
выполняет поиск всех (индексированных) путей, начинающихся с /your/parent/path/, и имеет инфикс gmai в своем остатке.
Для удаления результатов используйте:
locate -0 '/your/parent/path/*gmai*' | xargs -r -0 -- rm -rf --
Объяснение:
find [PATH...] проходит через все файлы и поддиректории под каждым PATH или текущими рабочими каталогами, если путь не указан, и печатает все совпадения (по умолчанию).find [PATH...] просматривает все файлы и подкаталоги под каждым PATH или текущие рабочие каталоги, если путь не указан, и распечатывает все совпадения (по умолчанию).
-path PATTERN соответствует полным путям против PATTERN, используя globbing, если таковые имеются, поэтому *gmai* соответствует всем именам путей с помощью инфикс gmai.-path PATTERN соответствует полным путям против PATTERN, используя globbing if any, поэтому *gmai* соответствует всем именам путей с инфикс gmai.
-delete удаляет все согласованные пути (и переопределяет действие по умолчанию для их печати).xargs собирает «элементы» со своего ввода, добавляет их в заданная команда и запускает эту команду.
Вы можете использовать ffmpeg для преобразования видеоформатов. Если он еще не установлен, используйте его:
sudo apt install ffmpeg
Я успешно попробовал следующую команду для преобразования образца видео в формат DivX 5.0 на основе AVI:
ffmpeg -i sample.mp4 -f avi -vtag DX50 sample.divx
2] Сначала вы указываете входной видеофайл, например, -i Videos/sample.mts, то мы говорим, что хотим, чтобы выходной формат был AVI с тегом DivX 5.0, используя -f avi -vtag: DX50. Последний аргумент - это выходной файл для генерации, здесь Videos/sample.divx. Сначала я попробую с одним маленьким видео и убедитесь, что все работает так, как ожидалось, и оба формата распознаются вашим игроком так как качество видео и размер файла в порядке. Вы можете настроить последнюю с дополнительным аргументом -q:v N, где N - это число, а более низкие значения - более высокое качество и размер файла. Хорошие значения, вероятно, находятся в диапазоне 2-8, возможно, попробуйте 5:
ffmpeg -i sample.mp4 -f avi -vtag DX50 -q:v 5 sample.divx
Затем, как только тест прошел успешно, и формат и качество в порядке, вы можете пакетно конвертировать все ваши видеофайлы .mts внутри определенного исходного каталога с рекурсивно с помощью сценария Bash:
#!/bin/bash
# Change the directories and quality level (lower=better) below accordingly:
inputfolder="/path/to/somewhere"
outputfolder="/path/to/elsewhere"
videoquality=5
shopt -s globstar nocaseglob nocasematch # enable ** and globs case-insensitivity
for inputfile in "$inputfolder"/**/*.mts ; do
outputfile="$outputfolder/$(basename "${inputfile%.mts}").divx"
ffmpeg -i "$inputfile" -f avi -vtag DX50 -q:v "$videoquality" "$outputfile"
done
Или, если вы хотите, чтобы выходные файлы в том же каталоге, что и вход, вот более короткая версия:
#!/bin/bash
# Change the directory and quality level (lower=better) below accordingly:
folder="/path/to/somewhere"
videoquality=5
shopt -s globstar nocaseglob nocasematch # enable ** and globs case-insensitivity
for inputfile in "$folder"/**/*.mts ; do
ffmpeg -i "$inputfile" -f avi -vtag DX50 -q:v "$videoquality" "${inputfile%.mts}.divx"
done
Вы можете использовать ffmpeg для преобразования видеоформатов. Если он еще не установлен, используйте его:
sudo apt install ffmpeg
Я успешно попробовал следующую команду для преобразования образца видео в формат DivX 5.0 на основе AVI:
ffmpeg -i sample.mp4 -f avi -vtag DX50 sample.divx
Сначала вы указываете входной видеофайл, например, -i Videos/sample.mts, то мы говорим, что хотим, чтобы выходной формат был AVI с тегом DivX 5.0, используя -f avi -vtag: DX50. Последний аргумент - это выходной файл для генерации, здесь Videos/sample.divx.
Сначала я попробую с одним маленьким видео и убедитесь, что все работает так, как ожидалось, и оба формата распознаются вашим игроком так как качество видео и размер файла в порядке. Вы можете настроить последнюю с дополнительным аргументом -q:v N, где N - это число, а более низкие значения - более высокое качество и размер файла. Хорошие значения, вероятно, находятся в диапазоне 2-8, возможно, попробуйте 5:
ffmpeg -i sample.mp4 -f avi -vtag DX50 -q:v 5 sample.divx
Затем, как только тест прошел успешно, и формат и качество в порядке, вы можете пакетно конвертировать все ваши видеофайлы .mts внутри определенного исходного каталога с рекурсивно с помощью сценария Bash:
#!/bin/bash
# Change the directories and quality level (lower=better) below accordingly:
inputfolder="/path/to/somewhere"
outputfolder="/path/to/elsewhere"
videoquality=5
shopt -s globstar nocaseglob nocasematch # enable ** and globs case-insensitivity
for inputfile in "$inputfolder"/**/*.mts ; do
outputfile="$outputfolder/$(basename "${inputfile%.mts}").divx"
ffmpeg -i "$inputfile" -f avi -vtag DX50 -q:v "$videoquality" "$outputfile"
done
Или, если вы хотите, чтобы выходные файлы в том же каталоге, что и вход, вот более короткая версия:
#!/bin/bash
# Change the directory and quality level (lower=better) below accordingly:
folder="/path/to/somewhere"
videoquality=5
shopt -s globstar nocaseglob nocasematch # enable ** and globs case-insensitivity
for inputfile in "$folder"/**/*.mts ; do
ffmpeg -i "$inputfile" -f avi -vtag DX50 -q:v "$videoquality" "${inputfile%.mts}.divx"
done
Вы можете использовать ffmpeg для преобразования видеоформатов. Если он еще не установлен, используйте его:
sudo apt install ffmpeg
Я успешно попробовал следующую команду для преобразования образца видео в формат DivX 5.0 на основе AVI:
ffmpeg -i sample.mp4 -f avi -vtag DX50 sample.divx
Сначала вы указываете входной видеофайл, например, -i Videos/sample.mts, то мы говорим, что хотим, чтобы выходной формат был AVI с тегом DivX 5.0, используя -f avi -vtag: DX50. Последний аргумент - это выходной файл для генерации, здесь Videos/sample.divx.
Сначала я попробую с одним маленьким видео и убедитесь, что все работает так, как ожидалось, и оба формата распознаются вашим игроком так как качество видео и размер файла в порядке. Вы можете настроить последнюю с дополнительным аргументом -q:v N, где N - это число, а более низкие значения - более высокое качество и размер файла. Хорошие значения, вероятно, находятся в диапазоне 2-8, возможно, попробуйте 5:
ffmpeg -i sample.mp4 -f avi -vtag DX50 -q:v 5 sample.divx
Затем, как только тест прошел успешно, и формат и качество в порядке, вы можете пакетно конвертировать все ваши видеофайлы .mts внутри определенного исходного каталога с рекурсивно с помощью сценария Bash:
#!/bin/bash
# Change the directories and quality level (lower=better) below accordingly:
inputfolder="/path/to/somewhere"
outputfolder="/path/to/elsewhere"
videoquality=5
shopt -s globstar nocaseglob nocasematch # enable ** and globs case-insensitivity
for inputfile in "$inputfolder"/**/*.mts ; do
outputfile="$outputfolder/$(basename "${inputfile%.mts}").divx"
ffmpeg -i "$inputfile" -f avi -vtag DX50 -q:v "$videoquality" "$outputfile"
done
Или, если вы хотите, чтобы выходные файлы в том же каталоге, что и вход, вот более короткая версия:
#!/bin/bash
# Change the directory and quality level (lower=better) below accordingly:
folder="/path/to/somewhere"
videoquality=5
shopt -s globstar nocaseglob nocasematch # enable ** and globs case-insensitivity
for inputfile in "$folder"/**/*.mts ; do
ffmpeg -i "$inputfile" -f avi -vtag DX50 -q:v "$videoquality" "${inputfile%.mts}.divx"
done