У командному рядку Windows ви можете зробити такі дії:
ren *.doc *.txt
copy my-precious-document.doc *-backup.doc
Чи є спосіб зробити це світ Linux (включаючи OS X)? Дуже дивна річ виявити команди командного рядка, які краще працювали в DOS ...
У командному рядку Windows ви можете зробити такі дії:
ren *.doc *.txt
copy my-precious-document.doc *-backup.doc
Чи є спосіб зробити це світ Linux (включаючи OS X)? Дуже дивна річ виявити команди командного рядка, які краще працювали в DOS ...
Відповіді:
Не зовсім. У Windows глобус (у Windows, лише макіяж) використовується командою; у * nix, глобулювання виконується оболонкою. Ваш перший приклад вийшов би приблизно таким:
mv a.doc b.doc c.doc a.txt b.txt c.txt
Очевидно, що утиліта не має поняття, що з цим робити, і це не повинно (ігноруючи такі речі, як mv
припущення, що ви намагаєтесь перейти в каталог). Щоб виконати щось на кшталт того, що ви хочете зробити, потрібно використовувати щось подібне:
find . -name "*.doc" -print0 | xargs -0 -I {} mv {} {}.txt
# Or...
find . -name "*.doc" -exec mv {} {}.txt \;
Зручно, що у Perl також є утиліта, яка може бути використана для перейменування файлів, відповідно названих rename
.
rename 's/\.txt$//' *.doc
-print0
.
Зауважте, що є дві версії rename
цього корабля з різними дистрибутивами.
Perl rename
за замовчуванням в ubuntu та варіантах, на які відповів @ Hello71
Інші дистрибутиви можуть доставляти пакет util-linux-ng, де знаходиться синтаксис:
rename <from> <to> <files>
Для виконання операції в ОП команда була б
rename .doc .txt *.doc
Це замінює '.doc' у імені файлу на '.txt' для будь-яких файлів, що закінчуються на .doc
OSX не постачається з перейменуванням, але якщо у вас встановлений Perl на OSX, ви можете просто скопіювати скрипт перейменування на вашу машину OSX з установки Linux. Версія Perl набагато гнучкіша, ніж util-linux (вище). Він повинен бути в / usr / bin / перейменувати в дистрибутивах типу Ubuntu. Сценарій очікує, що Perl буде в / usr / bin / perl, тому вам може знадобитися відредагувати його, якщо він знаходиться в іншому місці на OSX
/usr/bin/rename
. Він очікує, що в Perl з'явиться, /usr/bin/perl
тому вам може знадобитися відредагувати його, якщо він є в іншому місці OSX.
p5-file-rename
(або renameutils
не пов'язані, але, можливо, також корисні). Після встановлення macports (якщо у вас його ще немає) => sudo port install p5-file-rename
.. Символьне посилання слід створити, щоб викликати сценарій як rename
. (ps: справді було б дивно виявити утиліти командного рядка, які краще працювали під дос. Але тут теж не так.)
for f in *.doc; do cp "${f}" "${f//.doc/}-backup.doc"; done
буду працювати. Це додасть -backup.doc до кінця кожного файлу. ${f//.doc/}
видалить усі .docs з початкового імені файлу, тому ви не закінчите .doc. Однак особисто, коли я роблю резервну копію, я просто додаю .bkup до імені файлу, тому, якщо я хотів створити резервну копію всіх .doc в каталозі в окрему папку резервного копіювання, я б перейшов до папки, в яку я хочу перейти, cp
і зробити щось подібнеfor f in *.doc; do cp "${f}" "~/backups/${f}.bkup"; done