Hoe bestandsextensies van bestanden via Command Line in Mac OS te veranderen

Commandoregelgebruikers kunnen het handig vinden om de bestandsextensie van een groep bestanden in een map te wijzigen en de naam ervan te wijzigen. Stel dat u bijvoorbeeld een batch bestanden met de extensie ".txt" heeft maar dat u in plaats hiervan de extensie ".py" wilt hebben. Dat is wat we hier gaan demonstreren door te vertrouwen op eenvoudige bash-scripting om een ​​groep bestandsextensies te veranderen op de commandoregel van Mac OS / OS X, maar dit zal ook werken in linux en andere unix-smaken.


Voordat u begint, beseft u dat dit geen bestandstype verandert, het verandert alleen de bestandsextensie. Bovendien gebruikt deze walkthrough-methode opzettelijk de opdrachtregel en is deze dus gericht op meer geavanceerde gebruikers. De Terminal is echter niet de enige manier om dit te doen, dus als dit te geavanceerd is of niet relevant is voor uw gebruikersvaardighedenset, moet u eraan herinneren dat Mac OS eenvoudige hulpmiddelen biedt voor zowel batch-hernoemen van bestanden in Mac OS als bestandsextensie-extensies in de Finder ook, geen van beide heeft de opdrachtregel helemaal nodig. OK? Goed, op de commandoregel-aanpak met een eenvoudig bash script met één regel.

Overigens moet je altijd een kopie en / of back-up maken van de bestanden die je aan het wijzigen bent, vooral als je nog niet bekend bent met de opdrachtregel. Als u dit niet doet, kan dit leiden tot gegevensverlies, de Terminal is onvergeeflijk met typfouten of fouten, dus sla uw back-ups niet over.

Alle bestandsextensies in een map wijzigen via de opdrachtregel

Laten we een paar voorbeelden nemen. In het eerste voorbeeld gaan we alle bestanden in de huidige werkmap wijzigen met de extensie ".txt" en in plaats daarvan wijzigen in ".py". Ervan uitgaande dat u in de map bent waar u alle bestanden in de huidige map wilt wijzigen in een nieuwe bestandsextensie, volgt hier de syntaxis die u moet gebruiken:

for file in *.txt; do mv "$file" "${file%.txt}.py"; done

Merk op dat dit het jokerteken * gebruikt, wat betekent dat alles en alles in de bestandsextensie "* .txt" die overeenkomt met de huidige map, wordt gewijzigd. Let ook op de meerdere exemplaren van "txt" en de instantie van "py" die u beide wilt wijzigen om aan uw vereisten te voldoen.

Dit alles is het maken van een eenvoudige lus waarbij bestanden die overeenkomen met het jokerteken en de initiële bestandsextensie worden gevonden en vervolgens het "mv" -commando uitvoeren om die bestanden van de oorspronkelijke bestandsextensie naar de vervanging te verplaatsen (hernoemen). Best simpel, toch?

Laten we nog een voorbeeld nemen, laten we zeggen dat we een verzameling afbeeldingsbestanden in de huidige map hebben met bestandsnamen zoals "blahblah.jpg.JPEG" maar we willen echt dat ze allemaal dezelfde bestandsnaam hebben van minder redundant en gemakkelijker te lezen “blazblah.jpeg”. In dat geval ziet de syntax er als volgt uit:

for file in *.jpg.JPEG; do mv "$file" "${file%.jpg.JPEG}.jpeg"; done

De opdrachtregel voor het wijzigen van bestandsextensies is vrij snel en de bestandsextensies worden snel gewijzigd, zonder waarschuwingsdialogen of -bevestigingen.

En om nogmaals te herhalen, dit is niet om bestandstypes te converteren of om iets anders dan de naam van de bestandsextensie te veranderen.

Weet u van een betere manier om een ​​aantal bestandsextensies van bestanden in een map via de opdrachtregel te wijzigen? Wilt u gewoon eens bladeren door enkele andere geweldige opdrachtregel-tips (ga hierheen)? Laat ons je mening weten in de comments!