Ну, это каталог и ( -тип d
), поэтому он печатается. Вы можете попробовать установить минимальную глубину
find ./d -mindepth 1 -type d
первое разрешено, второе не сработает, но если поставить точку с запятой перед mkdir
тоже сработает.
#!/bin/bash
set -e
if [ "$1" == "cropit" ]; then
ITS_CROP_TIME="$(
mkdir cropped;
for i in *.mp4; do
ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"
done
rm -r./*.mp4
cd cropped
cp -r./*.mp4../
)"
fi
Я предполагаю, что вы хотите установить переменную ITS_CROP_TIME
в набор команд для последующего запуска?
Вот для чего нужны функции:
crop_all_in_dir () {
local source_dir="$1"
local dest_dir="$2"
mkdir -p "$dest_dir"
for file in "$source_dir"/*.mp4; do
[ ! -f "$file" ] && continue
ffmpeg -i "$file" -filter:v "crop=1920:980:0:-100" "$dest_dir/(basename "${file%.*}").mp4"
done
}
Затем вы можете вызвать это позже в скрипте как
# optional cropping
if [ "$1" = "cropit" ]; then
crop_all_in_dir. cropped
fi
т. е. обрезать все *.mp4
файлы в текущем каталоге и поместить обрезанные файлы в каталог cropped
(подкаталог текущего каталога ), создав выходной каталог, если он еще не существует.
Функция выполняет обрезку не -деструктивно, поэтому любая замена исходных файлов (вашими cp
и т. д. )будет выполняться вне этой функции.