Monday, September 11, 2006

find எனும் அற்புத ஆணை.

"இந்த உலகத்தை திரும்ப கண்டுபிடிக்கவேண்டியிருக்கிறது" என்று முன்பு நண்பர் ஒருவர் சொன்னார்.

இருக்கின்ற, கண்டுபிடிக்கப்பட்ட விடயங்களை நாம் கற்றுக்கொண்டு பயன்படுத்துவதற்கு தேவையான உழைப்பு, அவற்றை கண்டுபிடிப்பதற்கான நேரம், உழைப்பு போன்றதாக மாறிக்கொண்டிருக்கிறது என்பதே அதன் பொருள்.

உரைவழி ஆணைகளின் மகிமை stupid friendly இயங்குதளங்களை பயன்படுத்துபவர்களுக்கு அனுபவிக்க கிடைத்திருக்காது. உரைவழி ஆணைகள் மூலம் கருந்திரையின் முன்னால் உட்கார்ந்து அதிவேகமாக பணியாற்றும் அனுபவம் அவர்களுக்கு வாய்த்துமிருக்காது.

உரைவழி ஆணைகள் பற்றி இன்னும் ஏராளமான பதிவுகள் எழுதவேண்டியிருக்கிறது.

இன்றைக்கு மிகப்பொதுவாக நாம் பயன்படுத்தும் find ஆணையின் ஒரு சிறு வியத்தகு இயலுகை பற்றி பார்க்கலாம்.

find என்பது கோப்புக்களை தேடுவதற்கு பயன்படுத்தும் ஆணை.


------


google video, youtube போன்ற தளங்களிலிருந்து திருடிய கணிசமானளவு சலனப்பட கோப்புக்கள் என்னிடம் உள்ளன. அவை பொதுவாக flv வகை கோப்புக்கள். flash video வகை கோப்புக்களை mplayer இல் பார்க்கமுடியும் என்றாலும், முழுமையான பயன்பாட்டினை பெறமுடியாது. உதாரணமாக படத்தை வேகமாக ஓடவிடவோ, பட்டையை உருட்டி விரும்பிய இடத்திலிருந்து படத்தை பார்க்கவோ முடியாது.

அத்தோடு திறந்த ஆணைமூல வடிவங்களிலேயே என்னுடைய கோப்புக்களை வைத்திருக்க நான் விரும்புகிறேன். லினக்சில் கையாள்வதற்கு அது இலகுவானது. அத்தோடு எதிர்ப்பு புளகாகிதம் வேறு.

பொதுவாக ஊடகக்கோப்புக்களை மாற்றுவதற்கு ffmpeg , ffmpeg2theora போன்ற உரைவழி மென்பொருட்களை பயன்படுத்துவேன்.

என்னிடமுள்ள கோப்புக்களை ஒவ்வொன்றாக மாற்றிவைத்துக்கொள்ள மிகவும் சோம்பலாக இருந்தது.

மொத்தமாக ஒரு அடைவை அப்படியே மாற்றுவதற்கு ஏதேனும் வழி இருக்கிறதா என்று தேடிப்பார்த்தேன். பொருத்தமாக எதுவும் மாட்டுப்படவில்லை.

கடைசியில் நானாகவே ஒரு shell script இனை இதற்கென உருவாக்குவது என்ற முடிவுக்கு வந்தேன். script இல் ffmpeg2theora வை பயன்படுத்தி கோப்புக்களை மாற்றுவதற்கான செயற்பாட்டை எழுதுவது என்பது முடிவு. இதில் பல சிக்கல்கள் எழும். கோப்புக்கள் மீள மீள மாற்றப்படக்கூடாது. அத்தோடு ஒன்றுக்கு பின் ஒன்றாக மாற்றப்படவேண்டும். இதற்கு என்ன வழி?

இதுபற்றி நண்பர்களிடம் விசாரித்தபோதுதான், முழுமையான லினக்சை அடிப்படையாகக்கொண்ட தொலைக்காட்சியை நடத்திவரும் துறவி மெத்தவிகாரியிடமிருந்து பயனுள்ள குறிப்பொன்று கிடைத்தது.

find ஆணையில் இப்படியான வசதி ஒன்று இருக்கிறது என்பதே அது.

தேடிப்பார்த்தால். ஆம் இருக்கிறது. மிக மிக பிரயோசனமான வசதி.

கோப்புக்களை தேடுவது, தேடிப்பெறப்பட்ட கோப்புக்கள் மீது ஆணை ஒன்றினை செயற்படுத்துவது. இதற்கு -exec அல்லது -ok போன்ற ஆளிகளை (switches) பயன்படுத்தவேண்டும்.

script எதுவும் எழுதாமல் ஒரு வரியிலேயே எனக்கு தேவையான செயற்பாட்டினை பெற்றுக்கொண்டுவிட முடியும்.

இதோ ஆணை :

எடுத்துக்காட்டாக flv/ என்ற அடைவில் கோப்புக்கள் இருக்கின்றன என்று வைத்துக்கொள்வோம்.

find flv/ -name *.flv -exec ffmpeg2theora -v 10 {} \;

இந்த ஆணையை செயற்படுத்த ஒன்றன்பின் ஒன்றாக அழகாக நல்ல துல்லியத்துடன் கோப்புக்களை மாற்றிவைத்துவிட்டு நல்லபிள்ள்ளையாக உட்கார்ந்துவிடுகிறது.

இப்பொழுது இந்த ஆணையை பிரித்து பிரித்து விளங்கிக்கொள்ளலாம்.

find - தேடுக

flv/ - flv/ என்ற அடைவினுள்

-name - பெயராக

*.flv -.flv என்று முடியும் அத்தனை கோப்புக்களையும்

-exec - செயற்படுத்துக

ffmpeg2theora - இந்த மென்பொருளை

-v 10 - உயர் துல்லியத்துடன் (இது ffmpeg2theora மென்பொருளுக்குரிய ஆளி)

{} - கண்டுபிடிக்கப்படும் கோப்புக்களின் மீது செயற்படுத்துக

\; - எல்லா கோப்புக்களையும் செய்ற்படுத்தியவுடன் முடிக்க.



-ok என்ற ஆளியை -exec இற்கு பதிலாக பயன்படுத்தினீர்களானால் ஒவ்வொன்றாக உங்கள் அனுமதி பெற்று ஆணை கோப்புக்களின் மீது செயற்படுத்தப்படும்.

--------------


இது மிக சிறிய எடுத்துக்காட்டு மாத்திரம்தான். லினக்ஸ் உரைவழி ஆணைகளின் உலகத்தில் எத்தனையோ லட்சக்கணக்கான அதிசயங்கள் ஒளிந்திருக்கின்றன.

4 comments:

said...

//தங்களின் மின்னஞ்சல் முகவரி தர இயலுமா?//

தாராளமாக,

mmauran@gmail.com

மற்றது என்னுடைய பெயர் முரளி அல்ல. அது அப்பாவின் பெயர். நான் மயூரன்.
:-)

said...

or you can try..

$find flv/ -name *.flv | xargs ffmpeg2theora

said...

மயூரன்
இதில் அந்த ffmpeg/ffmepeg2theora பற்றி ஏதேனும் படம் போட்டால் இன்னும் புரிந்திருக்கும் என நினைக்கிறேன்.
நானே 3 முறை படித்த பிறகு தான் ஒரளவு புரிந்தது.
இந்த முறை உபயோகப்படுத்தும் போது ffmpeg/ffmpeg2theora இவை நிறுவப்பட்டு இருக்கவேண்டுமா?

said...

//இந்த முறை உபயோகப்படுத்தும் போது ffmpeg/ffmpeg2theora இவை நிறுவப்பட்டு இருக்கவேண்டுமா?//

ஆம்.

ffmpeg இனை நீங்கள் உபுண்டுவின் apt-get அல்லது synaptic போன்றவற்றை பயன்படுத்தி நிறுவிக்கொள்ளலாம்.

ffmpeg2theora வினை நான் கொடுத்திருக்கும் தொடுப்பிலிருந்து பெற்று நிறுவிக்கொள்ளலாம்.