Linux файл без имени

Содержание
  1. 🐧 [Bash советы] Переименование файлов без ввода полного имени дважды в Linux
  2. Как переименовать файлы без двойного ввода имени на Linux
  3. Другие способы переименования файлов без ввода полного имени дважды
  4. Способ 1 – с помощью команды mv
  5. ⚕ Как прочитать имя файла с пробелами в Linux
  6. 1) Создание имени файла с пробелами
  7. 2) Прочитать файл с пробелами в имени файла
  8. 3) Создание имени каталога с пробелами
  9. 4) Переход в каталог с пробелами в имени
  10. 5) Копирование каталога с пробелами в имени этого каталога
  11. Работа с «плохими» файлами в командной строке в Linux
  12. В названии файла есть служебный символ bash
  13. Имя файла начинается с дефиса
  14. Удаляем по wildcard
  15. Файлы с управляющим символом в названии
  16. Удаление файлов с символами utf8
  17. Перекодировка имени файла
  18. Автокомплит
  19. Удаляем файл через меню выбора
  20. Удаление по номеру inode
  21. Удаление по hex-коду
  22. bash вычленить имя файла из полного пути
  23. Как получить только имя файла с linux ‘find’?
  24. 6 ответов

🐧 [Bash советы] Переименование файлов без ввода полного имени дважды в Linux

Позвольте мне показать вам пример.

Вот как мы переименовываем файлы с помощью команды mv на Linux.

Приведенная выше команда переименует файл с именем «itisgood1.txt» в «itisgood2.txt».

Как видите, мы вводим имена файлов два раза в приведенной выше команде.

Однако это не обязательно.

Мы можем легко переименовать файлы в Linux с помощью команды mv, не вводя имена файлов два раза, с помощью простой функции BASH.

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

/.bashrc в вашем любимом редакторе:

Добавьте следующие строки в конце файла:

Здесь имя функции bash – mv.

Вы можете выбрать любое другое имя.

Сохраните и закройте файл.

А затем выполните следующую команду, чтобы изменения вступили в силу:

Отныне вы можете указать только оригинальное имя файла и переименовать файл, как показано ниже.

Используйте клавиши со стрелками для перемещения букв или нажмите клавишу Backspace, чтобы удалить все буквы и введите новое имя для файла.

Не только имя файла, вы также можете переименовать расширение файла.

Это буквально похоже на нажатие клавиши F2 и переименование файла в графическом интерфейсе.

Другие способы переименования файлов без ввода полного имени дважды

Есть также несколько других способов переименовать файл без необходимости вводить полное имя два раза.

Способ 1 – с помощью команды mv

Помимо метода функции BASH, здесь есть еще один простой способ переименования файлов с помощью команды mv.

Нам даже не нужна функция BASH.

Используйте следующую однострочную команду для быстрого переименования файла:

Приведенная выше команда скопирует файл с именем itisgood1.txt в itisgood2.txt.

Источник

⚕ Как прочитать имя файла с пробелами в Linux

В Linux не очень часто обрабатывают имя файла с пробелами, но иногда файлы, скопированные или смонтированные из Windows, могут заканчиваться пробелами.

Хотя не рекомендуется иметь имена файлов с пробелами, давайте обсудим, как управлять именем файла с пробелами в системе Linux.

Мы расскажем, как создать, прочитать и скопировать файл с пробелами в имени файла.

1) Создание имени файла с пробелами

Чтобы создать файлы с пробелами в именах, выполните команду, как показано далее:

Читайте также:  Grub cmdline linux это

Например, чтобы создать файл с именем «itisgood docs», используйте следующий синтаксис

Если вы хотите просмотреть такой файл с пробелом в имени файла, используйте тот же принцип включения имен файлов в кавычки.

2) Прочитать файл с пробелами в имени файла

Вы можете использовать команду «cat» или открыть документ, используя текстовый редактор, например, vim, nano или gedit.

Кроме того, вы можете использовать синтаксис ниже:

Давайте добавим текст в файл ‘itisgood docs’

Для просмотра файла выполните команду ниже:

3) Создание имени каталога с пробелами

Для создания имен каталогов с пробелом между ними используйте синтаксис ниже

Обратите внимание на пробел после обратной косой черты

Например, чтобы создать каталог с именем «itisgood files», запустите

4) Переход в каталог с пробелами в имени

Чтобы перейти к каталогу с пробелами в имени, используйте следующий синтаксис

Чтобы перейти в каталог «itisgood files», выполните команду ниже

5) Копирование каталога с пробелами в имени этого каталога

Чтобы скопировать каталог с пробелами в его имени в другое место, используйте синтаксис ниже

Например, чтобы скопировать “itisgood files” в /home/james, выполните:

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

Спасибо, что нашли время, чтобы прочитать эту статью и, пожалуйста, оставьте свои комментарии. ?

Источник

Работа с «плохими» файлами в командной строке в Linux

При работе в командной строке администраторы часто сталкиваются с необходимостью что-то сделать с определенным файлом: удалить, переместить, скопировать. При выполнении подобных задач зачастую приходится обращаться к файлам по имени, что может быть затруднительно, поскольку в именах файлов могут встречаться самые разные символы. Даже те, которых нет на клавиатуре. В этом плане работу может облегчить файловый менеджер, в котором файл можно просто выделить и совершить с ним нужное действие. Но для тех, кто привык работать исключительно в командной строке, предлагаются следующие способы.

В качестве shell-оболочки рассмотрим bash, как самую используемую. А в качестве операции над файлами рассмотрим удаление, как самую деструктивную.

Ситуации могут быть разными. В текущей директории могут быть файлы, которые нужно удалить вместе с теми, которые нужно оставить. Имена у них могут быть самыми разными. Причем первые от последних могут отличаться только одним каким-нибудь заковыристым символом.

В названии файла есть служебный символ bash

Самый простой случай. Для удаления файлов, содержащих в своем названии служебные символы вроде пробелов, кавычек, двойных кавычек, звездочек, обратные кавычки и др. можно заэкранировать обратным слешем или использовать одинарные кавычки:

С помощью одинарных кавычек нельзя удалить файл, в названии которого есть одинарная кавычка, даже заэкранировав ее.

С полным списком служебных символов и механизмом экранирования в bash можно ознакомиться в man bash. Раздел QUOTING.

Имя файла начинается с дефиса

Удалить файл, начинающийся с дефиса простым экранированием не получится, и команда rm будет воспринимать дефис, как начало своего аргумента. Решить проблему довольно просто:

Удаляем по wildcard

Если удаление файлов попадает под wildcard-маску, то можно удалить всю группу файлов:

Читайте также:  Отключение брандмауэр windows 10 навсегда

Файлы с управляющим символом в названии

В названии файла может встречаться управляющий ASCII-символ, такой как перевод строки (\n), табуляция (\t), backspace (\b). Это символы с ASCII-кодами менее 0x20, а также символы DELETE и ESC. Для удаления таких файлов подходит конструкция:

Другим способом удаления таких файлов являяется ввод управляющего символа с клавиатуры. Для этого нужно воспользоваться комбинацией клавиш, которая экранирует следующий введенный символ, тем самым запрещая системе обрабатывать его. Как правило, эта комбинация CTRL+V. Точно убедиться в этом можно с помощью команды stty -a, посмотрев на параметр lnext. Удалим файл, содержащий символ ESC:

Удаление файлов с символами utf8

Если имя файла содержит символ в кодировке utf8, который мы не можем набрать на клавиатуре, то удалить такой файл можно выделением его мышкой, копированием в буфер обмена и последующей вставкой на ввод команды rm. Главное условие состоит в том, что наш терминал должен работать в кодировке utf8. Кодировка выставляется в настройках терминала. Будь то xterm, putty или брутальный linux tty.

Перекодировка имени файла

Подозревая, что имя файла находится в кодировке, отличной от кодировки терминала, мы можем выполнить перекодирование всех файлов в текущей директории. В результате файлы с битой кодировкой будут перекодированы, а файлы с ascii-символами изменений не претерпят. Существенный плюс этого способа – приведение всех файлов в читабельный вид.

Как видно, чтобы осуществить правильное перекодирование нужно знать две кодировки: предполагаемую кодировку файла и кодировку нашего терминала. Наиболее трудно распознать предполагаемую кодировку файла по непонятным символам. Есть замечательная табличка

Также можно воспользоваться сторонними программами, которые попытаются распознать кодировку автоматически. Например, онлайн-декодер Лебедева.

Если вы встретили такие символы в примонтированном media-носителе или смонтированном разделе Windows, не спешите ничего перекодировать. Возможно, вы просто указали неправильные опции монтирования.

Автокомплит

В случае, если в директории название требуемого файла начинается уникально, и это название можно однозначно сформировать автокомплитом, то это довольно простой способ удалить файл:

Удаляем файл через меню выбора

Если мы дошли сюда, дело плохо. Попробуем удалить конкретный файл, составив для этого меню выбора. В итоге, все что нам останется сделать – это выбрать нужный пункт меню вместо ввода имени файла. Для этого нам нужно запрограммировать действие, которое будет происходить с файлом или файлами после ввода нами нужных пунктов меню.

Удаление по номеру inode

Удалить файл можно по его номеру inode. Номер inode уникально идентифицирует файл в файловой системе. Узнать номер inode можно с помощью команды ls, а удалить – с помощью find. Недостаток этого способа, такой же, как у предыдущего. Неудобно, в случае большого числа файлов.

Удаление по hex-коду

И нельзя не упомянуть один суровый метод. Удаление по hex-кодам. Суть такова: мы узнаем hex-коды всех байтов в имени файла, а затем удаляем файл, указывая вместо имени hex-коды.

Хорошо, все-таки, что на практике такие файлы попадаются нечасто.

Источник

bash вычленить имя файла из полного пути

Всем привет! Есть текстовый файл, вида:

выглядело бы более наглядно с cat в начале

Больше пайпов!
это делается одним грепом

Читайте также:  Что такое нод linux

О человечество! Это прекрасно! Всем огромное спасибо, тему можно считать решённой!

правильно! больше, еще больше велосипедов!

расскажи-ка, чем basename не подошел?

закон топикстартера: из 64 предложеных решений будет скрупулёзно выбрано самое вот такое

Это очень юниксвейно, да, на каждый возможный случай — своя утилита. Вот за это я и ненавижу linux. На самом деле лучший вариант из предложенных. Не надо плодить сущности.

На самом деле, я не знаю, что правильнее выбрать, поэтому выбрал то, что мне проще понять. Попробую варианты с седом и бэйснеймом и решу.

Ле. Человек препологающий, что RoR транслируется в js, что-то считает.

т.е. мне действительно интересно

я бы набыдлокодил grep path file | xargs basename

Ни разу не граммарнаци, но 3 ошибки в одном слове, даже для меня пребор. Марш учить уроки, сучка!

сомневаюсь, что он осилит ответить, потому вот:

\K [6] Keep the stuff left of the \K, don’t include it in $&

Ты крут, спасибо

Это очень юниксвейно, да, на каждый возможный случай — своя утилита. Вот за это я и ненавижу linux.

а я ненавижу из-за таких как ты пионеров, которые велосипеды придумывают типа sed ‘s|.*/\([^/]*\)$|\1|’

А sed не отдельная утилита, а встроенная команда bash?
Подсказка: basename входит в coreutils, а sed — отдельный пакет.

Это очень юниксвейно, да, на каждый возможный случай — своя утилита.

Так чё сидишь. Иди проси, чтобы в МС Офис добавили кнопку для определения имени файла. «Один комбайн, чтобы править всеми!»

Ага, а рядом приписывать: «# extracts basename from path»

Источник

Как получить только имя файла с linux ‘find’?

Я использую find для всех файлов в каталоге, поэтому я получаю список путей. Однако, мне нужны только имена файлов. то есть я получаю ./dir1/dir2/file.txt и я хочу сделать file.txt

6 ответов

в GNU find можно использовать

Если у вашей находки нет опции-printf, вы также можете использовать basename:

Если вы используете GNU find

или вы можете использовать язык программирования, таких как Ruby(1.9+)

Если вам нравится решение bash (по крайней мере 4)

использовать -execdir , который автоматически закрывает текущий файл в <> , например:

вы также можете использовать $PWD вместо . (в некоторых системах он не будет производить дополнительную точку спереди).

если у вас все еще есть дополнительная точка, в качестве альтернативы вы можете запустить:

на -execdir primary идентичен -exec primary за исключением этой утилиты будет выполняться из каталога, который закрывает текущий файл.

при использовании + вместо ; , потом <> заменяется как много путей, для каждого вызова утилиты. Другими словами, он будет печатать все имена файлов в одной строке.

если вы хотите выполнить какое-либо действие только против имени файла, используя basename может быть жестким.

будет просто эхо basename /my/found/path . Не то, что мы хотим, если мы хотим выполнить с именем файла.

но вы можете тогда xargs выход. например, чтобы убить файлы в dir на основе имен в другом dir:

Я нашел решение (на странице makandracards), которое дает только самое новое имя файла:

Источник

Оцените статью