У мене нещастя походить із MS-DOS, але принаймні це змушує мене оцінити, наскільки потужніший Linux. Я працював над тим, щоб зрівняти свій Linux-Fu, але є кілька речей, які можна зробити з DOS, що я не впевнений, як це зробити найпростіше з Linux:
Перейменування декількох файлів - використання двох марок
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\>rename *.txt *.bak
c:\> dir
Directory of c:\
file1.bak
file2.bak
file3.bak
file4.bak
Я знаю, що я міг би використати find -exec
тут, але можливо використовувати коротший синтаксис - можливо, mv
з якимись спеціальними прапорами чи синтаксисом? Я думаю, що ключовим у цьому є другий *
підстановочний код, оскільки у Linux не повинно виникнути проблем із першим (тобто я знаю, як вибрати файли, які я хочу перейменувати за допомогою символів)
Перейменування одного файлу - використання однієї підстановки
c:\> dir
Directory of c:\
file1.txt
c:\>rename file1.txt *.bak
c:\> dir
Directory of c:\
file1.bak
Це буде особливо корисно при перейменуванні довгих і громіздких імен файлів. Я подумав, що, можливо, я міг би використати mv file1.txt $1.bak
для завершення те, file1.txt.bak
що також було б прийнятним, але я не впевнений, що ви можете посилатись на $1
параметр inline командою shell. Знову ж таки, у цьому конкретному випадку просто зручно, як ms-dos bastardizes *
підстановку використовувати як своєрідну відповідність захоплення / заміни частини назви файлу.
Фільтрування списків каталогів з підстановкою
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
text.txt
\temp (directory)
c:\> dir file*
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\> t*
Directory of c:\
text.txt
\temp (directory)
Я не впевнений, який правильний синтаксис для цього ls
, або якщо це навіть можливо. Якщо я зробив щось подібне, ls t*
він повториться в каталогах, починаючи з t
. Моє вирішення використовувалось find . --max-depth 1 -iname "t*"
або щось подібне ls -al | grep t
- жодне з них не таке коротке і просте, як dir t*
є.
Нарешті, я знаю, що я можу налаштувати псевдоніми, щоб зробити ці довгі команди коротшими, але я хотів би навчитися виконувати ці речі поза вікном linux-fu, тому що іноді ви підключені до віддаленої системи або працюєте на новій машині.
Тож як я можу mv
і ls
файли виконувати так само, як раніше, dir
і rename
файли?