Как добавить.расширение xml для всех файлов в папке в Unix / Linux

Я хочу, чтобы переименовать все файлы в папке и добавить

4 ответов


на оболочке вы можете сделать следующее:

for file in *; do
    if [ -f ${file} ]; then
        mv ${file} ${file}.xml
    fi
done

редактировать

чтобы сделать это рекурсивно во всех подкаталогах, вы должны использовать find:

for file in $(find -type f); do
    mv ${file} ${file}.xml
done

С другой стороны, если вы собираетесь сделать что-то более сложным, чем это, вы, вероятно, не должны использовать shell скрипты.

лучше все же

использовать комментарий Джонатан Леффлер ниже:

find . -type f -exec mv {} {}.xml ';'

не знаю, является ли это стандартным, но мой Perl пакет (Debian / Ubuntu) включает в себя /usr/bin/prename (и символическая ссылка просто rename), которая не имеет другой цели:

rename 's/$/.xml/' *

find . -type f \! -name '*.xml' -print0 | xargs -0 rename 's/$/.xml/'

на Python:

использовать os.listdir найти имена всех файлов в каталоге. Если вам нужно рекурсивно найти все файлы в подкаталогах, а также, использовать os.walk вместо. Его API сложнее, чем os.listdir но он предоставляет мощные способы рекурсивно ходить каталогах.

затем использовать os.rename переименовать файлы.