Я изменил сценарий, чтобы зациклить файлы 4 на 4 - протестировано примерно на 20 файлах, похоже, что он работает. Сценарий сохранит имена файлов в массиве, а затем зациклит их 4 на 4:
temp=$(mktemp)
declare -a files=($(echo *.json|sort))
length=$(echo ${#files[@]})
for ((i=0;i<length;i++))
do
for ((j=0;j<=3;j++))
do
[ "${files[i]}" == "${files[i+j]}" ] && continue
[ "$((i+j))" -ge "$length" ] && continue
echo ${files[i]} ${files[i+j]}
#grep -w -Ff ${files[i]} -v ${files[i+j]} > ${temp}
#mv ${temp} ${files[i+j]}
done
done
Я только эхо
вывод здесь, если вы думаете, что он работает нормально, удалите комментарии.
Вы не использовали параметр -type
, поэтому find
удалит ( -delete
) все, что соответствует предоставленным условиям (здесь именно -mindepth 1 -mtime +5
), будь то файл или каталог (если он пуст) или что-то еще.
Если вы хотите удалить только пустые каталоги:
find /path/to/directory/ -mindepth 1 -type d -mtime +5 -delete
Обратите внимание, что лучше взглянуть на файлы, которые нужно удалить, прежде чем выполнять удаление, отбросьте -delete
:
find /path/to/directory/ -mindepth 1-type d -mtime +5
Для полноты картины, если вы хотите искать только файлы и каталоги, вставьте конструкцию OR в find
:
find /path/to/directory/ -mindepth 1 \( -type f -o -type d \) -mtime +5
Если вы хотите удалить и не пустые каталоги, используйте rm
внутри действия -exec
:
find /path/to/directory/ -mindepth 1 \( -type f -o -type d \) -mtime +5 -exec rm -r {} +
Добавьте -f
с rm
, если необходимо.