Попробуйте,
find /path/to/flac -type d -iname '*flac*' -exec mv -t /path/to/newDirectory {} +
Файл /etc/fstab
становится пустым, потому что вы используете не только -i
, но и -n
.
Опция -n
отключает «командуp
(печати )по умолчанию», которая обычно запускается в конце каждого цикла.
С -n
ваш скрипт действительно ничего не выводит, даже если вы удалите опцию -i
, потому что в скрипте нет команды p
, даже по умолчанию p
в конце цикла, который напечатал бы все строки, которые не были удалены. Поскольку сценарий sed
ничего не выводит, указание sed
внести изменения в -вместо -i
очищает файл.
Итак, чтобы решить вашу проблему, удалите -n
из своей команды.
Лично я написал бы код как
mntdir=/mnt/wsbackup
cp /etc/fstab /etc/fstab.orig
sed "\\:$mntdir:d" /etc/fstab.orig >/etc/fstab
Это позволяет нам сохранить копию исходного файла fstab
.
Как вариант,
mntdir=/mnt/wsbackup
sed -i.orig "\\:$mntdir:d" /etc/fstab
что сделало бы почти то же самое,в зависимости от того, какую реализацию sed
вы используете.
Оберните это в тест наgrep -q -F -e "$mntdir" /etc/fstab
(аналогично тому, что вы уже сделали ), если вам нужно ничего не делать с файлом, если в нем не найдена строка $mntdir
, т.е.
mntdir=/mnt/wsbackup
grep -q -F -e "$mntdir" /etc/fstab &&
sed -i.orig "\\:$mntdir:d" /etc/fstab