cd "/home" && \
find . -depth -type d ! -name . ! -empty -exec sh -c '
find "$1" -mtime +10 -type f -size +100M -delete
' {} {} \; -empty -delete
Нам нужен GNU find для работы выше. Основная идея заключается в том, что мы вызываем find
с режимом -depth
, который заставляет find
обрабатывать дочерние каталоги раньше, чем их родительские. Затем мы смотрим только на
каталоги и только те, которые непусты, тем самым не позволяя find
удалить изначально пустые
каталоги.
Некоторые вещи, которые должны работать (не проверены)
sed -i -e 's/(VSS):(F[0-9]+)/\1_\2/g' file.data
sed
вызов. sed -i -e "s/VSS:F31128015/VSS_F31128015/g" -e "s/VSS:F31127969/VSS_F31127969/g" file.data
Perl хорош для простой замены текста, подобной этой. Следуя вашей ветке комментариев к ответу ctrl -alt -Делора, есть способы избежать жадности. В этом случае вы хотите сопоставить ровно 8 цифр? Если да,
perl -i.bak -pe 's/(?<=VSS):(?=F\d{8})/_/' bigfile
При этом используются обходы, чтобы найти двоеточие, которое вы хотите изменить на подчеркивание.
Люди часто добавляют флаг g
, даже если в каждой строке есть только одно совпадение. Добавьте его, если необходимо.