Использование базового имени для удаления расширения файла и поиска файлов с таким же именем

В то время как David awk каждый - самый очевидный, для добавления к списку:

grep -xE '.{3,32}'

3
14.10.2015, 01:02
2 ответа

Вы можете использовать эту команду find :

find /test/ -name "*.doc" -exec sh -c 'a="$1"; rm "${a%.doc}.pdf"' find-sh {} \;

Она будет искать файлы .doc в каталоге / test / . Для каждого найденного файла вызывается оболочка sh с файлом в качестве аргумента. $ {a% .doc} .pdf заменяет расширение файла .doc на .pdf и rm удаляет его, если файл существуют.

4
27.01.2020, 21:16

Сохраните следующий сценарий как rm_dub.sh

#!/bin/sh

rm_dub() {
    dir=$(dirname -- "$1")
    base=$(basename -- "$1" "$2")

    rm -- "$dir/$base$3"
}

rm_dub "$@"

и используйте его с

find /test/ -name "*.doc" -exec sh rm_dub.sh {} .doc .pdf \;
1
27.01.2020, 21:16

Теги

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