Назад | Перейти на главную страницу

переименовать файлы и каталоги под Linux

почему следующая команда "find / -name"узел1'-print0 | xargs -0 переименовать 's / node1 / node_STAR /' "не заменять node1 в каталоге / var / tmp?

моя цель - сканировать Linux sys и переименовывать каталоги и файлы

пример с моей Linux-машины

pwd
/var/tmp/Change_host_dir
find  /  -name '*node1*'  -print0 | xargs -0
/var/tmp/Change_host_dir/node1
find  /  -name '*node1*'  -print0 | xargs -0 rename 's/node1/node_STAR/'
ls
node1

Стандартный linux rename страница руководства команды говорит:

rename переименует указанные файлы, заменив первое вхождение из от их имени к.

так что это просто для простого переименования файлов. Это стандартное переименование из util-linux, доступное во всех известных мне Linux-системах.

Я думаю, вы, вероятно, пытаетесь использовать Ларри Уолла пример скрипта переименования Perl. Если вы действительно этого хотите, создайте этот файл на своем пути:

#!/usr/bin/perl
#
# rename script examples from lwall:
#       rename 's/\.orig$//' *.orig
#       rename 'y/A-Z/a-z/ unless /^Make/' *
#       rename '$_ .= ".bad"' *.f
#       rename 'print "$_: "; s/foo/bar/ if <stdin> =~ /^y/i' *

$op = shift;
for (@ARGV) {
    $was = $_;
    eval $op;
    die $@ if $@;
    rename($was,$_) unless $was eq $_;
}

сделать его исполняемым с помощью chmod 755 rename, и вызовите его вместо переименования системы. Я протестировал это на вашем примере, и он работает.

попробуйте с

найти / -имя узел1 -exec переименовать blahblah {} \;