Этот ответ использует python для доступа к базе данных banshee, а затем выполняет действие sql, которое списки donbicca перечисляют с помощью твиста. Вместо того, чтобы многократно запускать код sql, я попросил python закодировать код sql по количеству экземпляров, которые существуют в SQL-коде. Вам нужно всего лишь запустить этот код один раз. Вам нужно заменить свой домашний путь (замените «/ home / JONDOE» на ваш домашний путь).
#!/usr/bin/env python
import sqlite3
#open database to determine number of rows to loop over
db = sqlite3.connect('/home/me/.config/banshee-1/banshee.db')
cursor = db.cursor()
a = cursor.execute('SELECT TrackID from coretracks group by TitleLowered,ArtistID,AlbumID,Title')
a_trackid = a.fetchall()
db.close()
#Close database to ensure results do not impact future results. Then reopen database
db = sqlite3.connect('/home/me/.config/banshee-1/banshee.db')
cursor = db.cursor()
sql = ('DELETE from coretracks where TrackID in (SELECT TrackID from (SELECT TrackID as trackid, count(TrackID) as g from coretracks group by TitleLowered,ArtistID,AlbumID,Title) where g > 1)')
for i in a_trackid:
cursor.execute(sql)
db.commit()
db.close()
Не уверен, что вы подразумеваете под «нечетными строками» [1], но этот оператор достигает того, что делает ваш код в настоящее время:
cd "$1" && rename 's/\.txt$/.bat/' *.txt
Не нужно делать собственные сообщения об ошибках, shell будет делать их просто отлично.
[1] Это делает его очень похожим на домашнее задание Uni.
Спасибо всем, кто ответил, вы очень помогли мне в понимании bash-скриптов, теперь, когда этот вопрос решен, как можно было бы закрыть вопрос?
Я использовал скрипт предоставленный John1024, работал безупречно. Очень уместно для этого. Приветствия
cd "$ 1" || {echo "Не удалось записать cd в каталог $ 1. Выход." ; выход 1; } для fname в * .txt do awk 'NR% 2 == 1 {print; } '"$ fname"> "$ {fname% .txt} .bat" done