Vraag Hoe een groep bestanden te hernoemen met wat lijkt op een Windows-bestandspad in hun naam


Ik heb een aantal bestanden met de bestandsnaam in de war. Alle bestandsnamen hebben hetzelfde begin en lijken op Windows-bestandsmappen. Het probleem is dat er meer dan 700 bestanden zijn en dat ik echt niet door wil gaan en ze allemaal handmatig moet hernoemen. Dit zijn voorbeelden van de bestandsnamen (Opmerking: geen van deze heeft bestandsmappen):

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

De belangrijkste weg te nemen is dat elk bestand heeft G:some\really\long\file\path\then\the\ voor de bestandsnaam die ik zou willen.

Dus ik zou willen dat de bovenstaande bestanden er als volgt uitzien:

name1.jpg
name2.png
filename.txt
file_name.mov

Ik heb de rename commando en was niet succesvol. Ik ben nog steeds nieuw bij Linux en weet echt niet goed hoe ik het moet aanpakken of wat ik echt moet googlen. Alle hulp wordt op prijs gesteld.


8
2017-08-24 05:04


oorsprong




antwoorden:


Ik heb zojuist alles verwijderd tot aan de laatste backslash met rename

$ rename -n 's/.*\\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

Verwijderen -n na het testen om de bestanden daadwerkelijk te hernoemen.

Notes

  • -n doe niets, druk gewoon af wat er zal veranderen
  • s/old/new vervangen old met new
  • .* een willekeurig aantal tekens
  • \\ De eerste backslash is om aan de tweede backslash te ontsnappen.
  • Omdat regex deze uitdrukking hebzuchtig is .*\\ eet ook alle voorgaande backslashes.
  • Sinds de laatste twee scheidingstekens // zijn leeg alles wat overeenkomt in het zoekgedeelte wordt verwijderd

18
2017-08-24 05:21



Heb ik alleen de eerste regel nodig, of moet ik dat voor elk bestand doen? - kingcobra1986
je hebt alleen de eerste regel @ kingcobra1986 nodig, de andere zijn slechts de uitvoer. * komt overeen met alle bestanden, maar laat me dat veranderen G* - klaar - dus nu komt het overeen met alle bestanden die beginnen met Gin de huidige map en zal ze allemaal tegelijkertijd bewerken. Als ze zich in meerdere mappen bevinden, kunnen we dat op verschillende manieren ook oplossen - Zanna
Dat werkte. Kun je uitleggen wat er precies in die rij gebeurt? - kingcobra1986
@ kingcobra1986 sorry, ik heb notities toegevoegd. Ik hoop dat het duidelijk is, zo niet, aarzel dan niet om meer te vragen! - Zanna
Ha, ik vind het een goed idee om de .*\\  sinds van de hebberig .* - Ziazis


Je kunt dit in puur doen bash gebruik makend van shell parameter uitbreiding.

${file##*\\} (cut-up-to-last-prefix) stript alles vanaf het begin van de bestandsnaam tot het laatst \ gezien.

for file in *; do
    mv -v "$file" "${file##*\\}";
done

De hernoemingsresultaten zijn:

‘G:some\\really\\long\\file\\path\\then\\the\\file_name.mov’ -> ‘file_name.mov’
‘G:some\\really\\long\\file\\path\\then\\the\\filename.txt’ -> ‘filename.txt’
‘G:some\\really\\long\\file\\path\\then\\the\\name1.jpg’ -> ‘name1.jpg’
‘G:some\\really\\long\\file\\path\\then\\the\\name2.png’ -> ‘name2.png’

9
2017-08-24 06:42





Als je op zoek bent naar GUI oplossingen zijn er veel toepassingen voor het hernoemen van bulk. ik zou voorstellen Thunar, dat is de standaard bestandsbeheerder voor Xfce. Het wordt geleverd met een handige tool voor bulk-hernoemen. U kunt Thunar installeren door de volgende opdracht in Terminal uit te voeren:

sudo apt-get install thunar

U zult waarschijnlijk ook vanuit Ubuntu Software kunnen installeren.

Hoe het hulpprogramma te gebruiken

  1. Nadat u Thunar hebt geïnstalleerd, start u de Bulk hernoemen nut.
  2. Klik op de + pictogram en voeg de bestanden toe die u wilt hernoemen.
  3. Klik op de vervolgkeuzelijst net onder de lijst met geselecteerde bestanden en selecteer Zoeken en vervangen.
  4. In de Zoeken: vakje invoeren G:some\really\long\file\path\then\the\ (het deel dat u wilt verwijderen), verlaat het Vervangen door: vak leeg. U zou de preview van de wijzigingen in de Nieuwe naam kolom.
  5. Om de wijzigingen toe te passen, klikt u op de Hernoem bestanden knop.

behalve Zoeken en vervangen dit hulpprogramma ondersteunt de volgende acties:

  • Datum / tijd invoegen
  • Invoegen / Overschrijven
  • nummering
  • Karakters verwijderen
  • Hoofdletters / kleine letters

6
2017-08-24 05:24



is er niet een voor nautilus (ik denk van wel!)? Het lijkt nogal overbodig om voor dit doel een nieuwe bestandsbrowser te installeren. - Zanna
@Zanna Er is er een in v3.22, maar ik denk dat nog steeds niet beschikbaar is in Ubuntu repos. - pomsky
Thunar is best handig en lijkt goed samen te bestaan ​​met andere bestandsbrowsers, dus ik denk dat het de moeite waard kan zijn om het voor dit doel te installeren. Maar kun je dit antwoord uitbreiden met een uitleg van hoe om bulk hernoemen in Thunar te doen? - Eliah Kagan
@EliahKagan en het is ook lichtgewicht - pomsky
Mooi gedaan, nu kan ik up-to-date (ik heb een Xubuntu die ik ook kan testen :)) - Zanna