Масса / пакетное переименование текстовых файлов на основе первой строки (содержимого) текстового файла в Ubuntu 20.10?

У меня есть файлы 2015, которые являются .pgn файлы. Это только форма текстового файла, открывается с помощью Notepad ++. Я хочу переименовать эти файлы, заменяя их имя с первой строкой соответствующего содержимого файла в Ubuntu 20.10. Как мы можем достичь этой задачи?

enter image description here

Это пример файла. Имя файла ECO_1.PGN , и я хочу, чтобы это изменилось на первую строку содержимого файла, который отображается на рисунке, который я хочу сделать для всех файлов 4030, которые у меня есть одновременно в одной операции, если возможный. Есть ли простой способ для массового переименования на основе содержимого файла (первая строка) для этого? Если кто-то может помочь, я очень благодарю их. Спасибо. :)

Редактировать:

Всего в 2015 году. Существующие имена файлов ECO_1.PGN, ECO_2.PGN, ........ до ECO_2015.PGN Я хочу переименовать каждый из этих файлов, чтобы соответствовать именно первой строке соответствующего содержимого файла. Образец файла отображается на изображении, в котором первая строка:

[ECO "A00"] [Opening "Polish (Sokolsky) opening"]

, поэтому имя этого файла должно меняться из ECO_1.PGN [ECO «A00»] [открытие » (Сокольский) Открытие "]

Каждый файл - это файл .pgn .pgn .pgn .pgn . .PGN Файлы могут быть сохранены как .txt файлы также без каких-либо проблем. Но я не хочу менять расширение здесь. Требуется только изменение имен, заменяя его первой строкой содержимого файла для всех файлов 2015. Спасибо. :)

2
задан 13 February 2021 в 00:13

1 ответ

Да, вы можете. Убедитесь в необходимости дефрагментации, а затем используйте управление дисками, чтобы освободить место для новых разделов. Если вы хотите поменяться местами, сделайте небольшую емкость около 8 Гбит/с или оставьте ее полностью, если твердотельный накопитель. Это приводит к чрезмерному износу, и такие ОС, как Ubuntu, обнаруживают и создают для вас виртуальный диск для его использования при необходимости. Остальная часть свободного пространства будет использоваться для установки ОС. Необходимо проверить, настроен ли компьютер на загрузку только EFI, убедившись, что в микропрограмме отключена совместимость CSM. Удачи с установкой.

-121--910206-

Я протестировал DSU 1.7 (использует репозиторий Dell EMC Linux версии 19.5) на 20.04LTS и, хотя он устанавливается, он не работает.

DSU для 18,04 https://dl.dell.com/FOLDER05327755M/1/Systems-Management_Application_FT56W_LN64_1.6.0_A00.BIN

К сожалению, требуется ряд библиотечных зависимостей, которые не существуют в 20,04, по крайней мере под тем же именем.

Команда dsu достаточно хороша, чтобы рассказать вам, какие библиотеки отсутствуют: -)

Возможно, вы сможете работать с достаточным количеством поисковых запросов через 20.04 репо.

-121--910929-

Чтобы переименовать все файлы одновременно, используйте head , чтобы получить первую строку в файле, и mv , чтобы переименовать файл с помощью цикла для так:

for f in *.pgn
    do
    f1=$(head -n1 "$f")
    echo mv -n "$f" "$f1"
    done

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

Если результаты удовлетворены, удалите echo , чтобы выполнить фактическое переименование, например:

for f in *.pgn
    do
    f1=$(head -n1 "$f")
    mv -n "$f" "$f1"
    done

Примечание:

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

Если первая строка в каждом файле не уникальна, можно добавить номера mv к новым именам файлов, если они уже существуют, используя опцию --backup = t после mv , например:

Измените эту строку в приведенном выше коде:

echo mv -n "$f" "$f1"

На эту:

echo mv --backup=t "$f" "$f1"

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

Также обратите внимание, что действия опций mv ( -n или -backup = t ) не будут отражаться в выходных данных при использовании echo , но вступят в силу при удалении echo .

Еще одна вещь: если первая строка файла содержит косые черты /, это неприемлемо и приведет к ошибке, поэтому необходимо переопределить переменную $ f1 и изменить ее на подчеркивание _ , добавив эту строку в код после f1 = $ (head -n1 «$ f») :

f1="${f1//\//_}" 

Последний рабочий код, который может использовать дублирующиеся имена файлов и косые черты, таков ( будьте осторожны , что приведет к немедленному переименованию файлов .управляемый ):

for f in *.pgn
    do
    f1=$(head -n1 "$f")
    f1="${f1//\//_}"
    mv --backup=t "$f" "$f1"
    done
1
ответ дан 18 March 2021 в 23:35

Другие вопросы по тегам:

Похожие вопросы: