У меня есть несчастье прийти из 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 с помощью команды оболочки. Опять же, в этом конкретном случае просто удобно, как ms-dos убивает *подстановочный знак, который будет использоваться как своего рода совпадение захвата / замены для части имени файла.
Фильтрация списков каталогов с помощью подстановочного знака
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файлы?