2009-06-11 2 views
0

У меня есть несколько файлов в папке с именами, такими как abc_old.php, теперь я хочу переименовать их как abc.php, то есть хочу удалить этот «_old» из всех моих имен файлов. я делаю это за один раз ????переименование файлов в папке

+1

Над ftp? Окна? линукс? – Blorgbeard

+0

Вы хотите написать пользовательское приложение ftp? Или вы используете существующий ftp-клиент? – Tony

+0

ну, у меня есть linux и ftp, и скажите мне, где когда-либо проще :-) – developer

ответ

1

Оборудование Shell ограничено через FTP. Я бы скопировал файлы в локальный каталог. В Баш (учитывая, что в приведенном выше вас утверждают, что Linux есть):

for filename in *_old.php 
do 
    mv $filename ${filename%_old.php}.php 
done 

Оператор% соответствует концу строки и возвращает $ имя файла без согласованного сегмента (бит после%). Следовательно, вышеперечисленное прерывает _old.php, а затем заменяет .php.

Я не тестировал вышеуказанное. Сначала попробуйте его в фиктивном каталоге.

+0

нет там, где это можно сделать через ftp или konsole/terminal ??????? – developer

+0

Какую оболочку вы используете в своем терминале? Вероятно, вы обнаружите, что это bash –

+0

thanxx a tonn man .................. ваш код сделал это всего за один простой ход :-) – developer

0

Напишите программу, которая циклически округляет, анализирует имя файла, вносит необходимые изменения и переименовывает файл. Я не знаю, как это сделать.

Возможно, вам будет легче скопировать файлы на локальный компьютер, запустить программу, чтобы изменить имя там, а затем загрузить вновь названные файлы обратно на FTP-сервер (и, очевидно, удалить старые)

1

Давным-давно я нашел небольшой фрагмент кода в задней части книги программирования Perl 4 O'Reilly, которая позволяет вам переименовывать файлы с использованием регулярных выражений. Я использовал это с тех пор. Возможность использования регулярных выражений Perl, особенно tr и s, упростила переименование файлов. Поэтому вырежьте это, вставьте его в файл с именем rename на своем пути, сделайте его исполняемым «chmod ugo + x rename» и сохраните его как часть вашего обычного арсенала инструментов. Проверьте, где находится ваш perl с «perl» и соответствующим образом отрегулируйте первую строку. Предполагается, что вы находитесь в системе Unix с доступом к Perl.

#!/usr/bin/perl 
# Usage: rename perlexpr [files] 

($op = shift) || die "Usage: rename perlexpr [filenames]\n"; 
if ([email protected]) 
{ 
    @ARGV = <STDIN>; 
    chop (@ARGV); 
} 
for (@ARGV) 
{ 
    $was = $_; 
    eval $op; 
    die [email protected] if [email protected]; 
    rename ($was,$_) unless $was eq $_; 
} 

Так для примера, вы могли бы сделать

rename "s/_old//" *_old.php 

К сожалению. Тег для этого вопроса - ftp. Если ваш доступ через ftp, то это не сработает, потому что у вас не будет доступа к оболочке.

Смежные вопросы