Скрипт для удаления файла по расширению

Потому что wcтакже считает новую строку \n.

echoдобавляет символ новой строки в конец вывода, если не вызывается с опцией -n.

0
10.07.2020, 12:24
1 ответ

Если у вас есть Bash или ksh:

#!/bin/bash
extensions=(c~ h~ bak)
for e in "${extensions[@]}"; do
    find. -name "*.$e" -delete
done

Или замените -exec rm -- {} +на -delete, если у вашего findнет последнего. Конечно, вы также можете сначала запустить пробный запуск без -delete, чтобы увидеть файлы, которые будут удалены.

Приведенное выше действие приведет к удалению файлов во всех подкаталогах.Если вы хотите удалить файлы только в текущем каталоге (, а не в подкаталогах ), мы можем использовать rmвместоfind:

#!/bin/bash
extensions=(c~ h~ bak)
shopt -s nullglob
for e in "${extensions[@]}"; do
    rm./*."$e"
done

Или просто

#!/bin/bash
shopt -s nullglob
rm -- *.c~ *.h~ *.bak

Более общая версия будет принимать каталог и расширения в качестве аргументов скрипта:

#!/bin/sh
dir=$1
shift
for e in "$@"; do
    find "$dir" -name "*.$e" -delete
done

Вы бы запустили это с rmscript.sh /some/target/dir c~ h~ bak.

2
18.03.2021, 23:21

Теги

Похожие вопросы