�u�����v�ҁ@find�^grep�^xargs�R�}���h���g�����Ȃ�



�Ɩ��Ŋy���邽�߂�UNIX�e�N�j�b�N�W�u�����v��

���̋L����2008�N�`2009�N�����ĉj�ЂŘA�ڂ��Ă����u�Ɩ��Ŋy���邽�߂�UNIX�e�N�j�b�N�W�v�̌��{�ł��B

�͂��߂�

�@���̘A�ڂł́AUNIX�nOS���R�}���h���C���ォ�������悭���p���邽�߂ɒm���Ă����ׂ��e�N�j�b�N���A�֗��ȏ��Z���Љ�Ă����܂��B

�@�����́u�t�@�C���E�t�@�C�����e�̌����v�Ɋւ����e�N�j�b�N���Љ�܂��B

�֘A�L��

�Ώۓǎ�

�����m�F�‹�

�@�Ȃ��ׂ�UNIX�nOS���ʂɓ��Ă͂܂��悤���������̂ŁA���ɋL�q���Ȃ��ꍇ�́AMac OS X�ARed Hat Linux���ł����삵�܂��B�V�F���Ɋւ��ẮAbash�iBourne-Again Shell 2������3�j���z�肵�Ă��܂��B

�e�L�X�g�t�@�C����������igrep�R�}���h�j

�@grep�́A�t�@�C���������w�肵���������Ɉ��v�������e���܂ލs��������R�}���h�ł��B�������ɂ͐��K�\�����w�肷�邱�Ƃ��”\�ł��B

$ grep�m�I�v�V�����n�m��������n�m�t�@�C�����n

�@�f�t�H���g�ł͎w�肵���������ƈ��v���镔�������‚������s���\�����܂��B���\�I�ȃI�v�V�����ɂ́A���̂悤�Ȃ��̂������܂��B

grep�R�}���h�̑��\�I�ȃI�v�V����

-�I�v�V����
-i
-l
-n
-v
���@grep 2.5�ȍ~�̏ꍇ�A���̃I�v�V���������p�”\�ł��B

-�I�v�V����
--color
-o (--only-matching)
-r

�@grep�R�}���h��p��������2�Љ�܂��B

�����̌�������w�肵�Č����iOR�����j����

�@�������uaomori�v���܂ލs�ƕ������uyamanashi�v���܂ލs���A�ufruits.txt�v�t�@�C�����甲���o���܂��B

$ cat fruits.txt
1001,unshu-mikan,wakayama
1002,apple,aomori
1003,japanese pear,chiba
1004,grape,yamanashi
1005,peach,yamanashi

$ grep -e "aomori" -e "yamanashi" fruits.txt
1002,apple,aomori
1004,grape,yamanashi
1005,peach,yamanashi

�@���̂悤�Ȏw�������邱�Ƃ��”\�ł��B

$ grep "aomori\|yamanashi" fruits.txt

�@�u|�i�p�C�v�j�v�̑O�Ɂu\�i�o�b�N�X���b�V���j�v�������Ȃ���OR�����ɂȂ��Ȃ��̂Œ��ӂ��Ă��������B

�����̌�������w�肵�Č�����iAND�����j

�@grep�R�}���h�ŁAAND�������w�肷���ꍇ�́A�V�F���X�N���v�g�̃p�C�v�@�\���g���āA2�‚�grep�R�}���h�����т‚��܂��B

$ grep "yamanashi" fruits.txt | grep "peach"
1005,peach,yamanashi

�@���L�̗������s�����ƁA�t�@�C�����̕������uyamanashi�v�ƕ������upeach�v�������܂܂����s���擾�ł��܂��B

���G�ȏ����Ńt�@�C���E�f�B���N�g����������ifind�R�}���h�j

�@find�R�}���h�́A�f�B���N�g���c���[�̒������t�@�C�����T���o�����Ƃ��ł����A���ϋ��͂ŕ��G�ȃR�}���h�ł��B

$ find �m�p�X�n[���i�I�v�V�����A���ʎ��A�A�N�V�����j]

�@�u���v�́A�I�v�V�����A���ʎ������уA�N�V�����̑g�ݍ��킹�����Ȃ��܂��B

����1
�@find�R�}���h�́AOS�ɂ����Ďg�p�”\�ȃI�v�V�������قȂ��܂��B�@�Ⴆ�΁ASolaris�Ȃǂ�OS�ł́A�ȍ~�ŏЉ�����̑������g�p�ł��܂���
�@�i�Q�l�y�[�W�F�ufind�vSunOS���t�@�����X�}�j���A��1�j

find�R�}���h�̑��\�I�ȃI�v�V����

�@find�R�}���h�̑��\�I�ȃI�v�V�������\�ɂ܂Ƃ߂Ă����܂��B

find�R�}���h�̑��\�I�ȃI�v�V����

�I�v�V����
-follow
-maxdepth n
-mindepth n

���j���[�g�f�B���N�g���u/�v�����A2 �K�w�ڂ܂ł�����ĕ\������

$ find / -maxdepth 2
/
/home
/home/yasuda
(��)
/usr
/usr/local
(��)

�@0�A1�K�w�ڂ��\�������邱�Ƃɒ��ӂ��ĉ������B

find�R�}���h�̑��\�I�Ȕ��ʎ�

�@find�R�}���h�̑��\�I�Ȕ��ʎ����\�ɂ܂Ƃ߂Ă����܂��B

find�R�}���h�̌����������w�肷�����\�I�Ȕ��ʎ��i���{�j

���ʎ�
-name [pattern]
-path [pattern]
-regex [pattern]
-type [filetype]
�@
�@
�@
-group [group]
-user [user]

�@���̂悤�ɁA�����J�n�f�B���N�g������w�肵�Č���邱�Ƃ��ł��܂��B

���j�u/usr/local/bin�v�u/usr/bin�v�u/bin�v�ȉ��̑S�t�@�C���������

$ find /usr/local/bin /usr/bin /bin -type f
/usr/local/bin/perldoc
/usr/local/bin/perlivp
(��)

find�R�}���h�̌����������w�肷�����\�I�Ȕ��ʎ��i�����j

���ʎ�
-atime
�@
�@
-mtime
�@
�@
-mmin
�@
�@
-newer [file name]

���j�t�@�C���̍ŏI�X�V����3�������O�̃t�@�C���������

$ date
Fri Nov 21 13:48:19 JST 2008

$ ls -l
total 0
-rw-r--r--  1 root  root  0 Nov 20 13:30 test1.txt
-rw-r--r--  1 root  root  0 Nov 19 13:30 test2.txt
-rw-r--r--  1 root  root  0 Nov 18 13:30 test3.txt

$ find . -mtime +3
./test3.txt

find�R�}���h�̌����������w�肷�����\�I�Ȕ��ʎ��i�T�C�Y�j

���ʎ�
-empty
-size n[c/k/b]
�@
�@
�@

find�R�}���h�̌����������w�肷�����\�I�Ȕ��ʎ��i�A�N�Z�X���j

���ʎ�
-perm mode
-perm -mode
-perm +mode

�@���̗��ł́A�J�����g�f�B���N�g���ȉ��ɂ����A�A�N�Z�X������644�i-rw-r--r--�j�̃t�@�C���������E�\�����܂��B

���j�t�@�C���̃A�N�Z�X����(�p�[�~�b�V����)�Ńt�@�C���������

$ find . -perm 644
./.cshrc
./.login
./.login_conf
(��)

find�R�}���h�̑��\�I�ȉ��Z�q

�@���ʎ��͎��̂悤�ȉ��Z�q�ŏ������lj��ł��܂��B

���Z�q
\( ���ʎ� \)
! ���ʎ�
���ʎ�1 -a ���ʎ�2
���ʎ�1 -o ���ʎ�2

find�R�}���h�̑��\�I�ȃA�N�V����

�@�A�N�V�����͎��̂��̂��w���”\�ł��B

�A�N�V����
-print
-fprint �t�@�C����
-exec �R�}���h '{}' \;
-exec �R�}���h '{}' +
-ok �R�}���h \;

����ʂɑ΂����R�}���h�̎��s�ifind -exec�^xargs�R�}���h�j

�@����Č��‚������S�t�@�C�������x�ɏ����������ꍇ�Afind�R�}���h�̃A�N�V������p���Ď��̂悤�Ɏw���ł��܂��B

$ find . -type f -exec �R�}���h '{}' \;

�@�u-exec�v�A�N�V�����ɂ����A����ʂɑ΂��āu�R�}���h�v�����s���܂��B���̂Ƃ��u{}�v��find�R�}���h�̎��s���ʁA�‚܂��t�@�C���̃p�X�ɒu�����������܂��B

�@���������L�̗��́A�t�@�C�������u�R�}���h�v�����s�������̂Ŏ��Ԃ��������܂��B���̂��߁A���ʓI�ɂ�xargs�R�}���h���p���āA���̂悤�Ɏw�肵�܂��iSolaris�ɂ͑Ή����Ă��܂����j�B

$ find . -type f -print0 | xargs -0 �R�}���h

�@xargs�R�}���h�́A�W�����͂����������ǂݍ��݁A�w���́u�R�}���h�v�����s���܂��B���L�̗��ł́Afind�R�}���h��p���Č��‚������S�t�@�C���̃p�X���A���x�Ɂu�R�}���h�v�֓n���Ă��܂��B

�@�Ȃ��A������ꕶ�����܂ރt�@�C��������������邽�߁Afind�R�}���h�ɂ͕K���u-print0�v�I�v�V�������t���uxargs -0�v�Ŏ�����悤�ɂ��܂��傤�B�u-0�v�I�v�V�����́u--null�v�ł��\���܂����iFreeBSD�ł́u-0�v�I�v�V�����̂ݗ��p�”\�j�B

�@�����ɂ����Afind�R�}���h�͋�Ɖ��s�ł͂Ȃ��k�������i\0�j�����؂��Ƃ��āA����ʂ��o�͂��܂��B���l��xargs�R�}���h���A�������k�������ŋ��؂����Ă������̂Ƃ��ď������s���܂��B

����2
�@find�R�}���h��-exec�A�N�V�����́A�V�F�����N�����܂����B�V�F���R�}���h���g�������ꍇ�́A���̂悤�Ɏw�肵�܂��B

$ find �c -exec sh -c '�V�F���R�}���h������' \;
����3
�@xargs�R�}���h�ň��x�ɓn���钷���̐�����OS�ɂ����ĈقȂ��܂��B
�@�����l�́uARG_MAX�v�Ƃ����}�N���萔�Œ��`�����Ă��܂��B
�@Debian �̏ꍇ�́A���̃R�}���h�Ŏ����̎g���Ă���OS��ARG_MAX��
�@���ׂ邱�Ƃ��ł��܂��B

  Debian �̏ꍇ��ARG_MAX�������@

  $ getconf ARG_MAX
  131072

�@�ŋ߂�find�R�}���h�iGNU find��4.2.12�ȍ~�j�ł́A���‚������t�@�C�������x�ɏ������邽�߂́u-exec �R�}���h '{}' +�v�I�v�V���������݂��܂��iFreeBSD�ASolaris���Ή��j�B

$ find . -type f -exec �R�}���h '{}' +

�@�u+�v���w�肵���ꍇ�A�u{}�v���A����Č��‚������S�t�@�C�����̃p�X�ɒu�����������܂��B

�@xargs�R�}���h���g���Ȃ��ꍇ�́A�V�F���̐����\�����g���Ď��̂悤�Ɏw���ł��܂��B

$ find . -type f -print0 | while read -r -d '' file; do �R�}���h "$file"; done

�@�t�@�C�����Ɂu\�i�o�b�N�X���b�V���j�v���܂܂��Ă����ꍇ�ɔ�Aread�Ɂu-r�v�I�v�V�������t���Ă��܂��B�������A���̕��@�����‚������t�@�C�������u�R�}���h�v�����s�����̂ŁA���x�͒x���Ȃ��܂��B

���j���L�̂��ꂼ���̕��@�ŁA����Č��‚������t�@�C���ɑ΂�ls�R�}���h���p���Ĉꗗ�\��

$ ls
test1.txt       test2.txt       test3.txt

$ find . -type f -exec ls '{}' \;
./test1.txt
./test2.txt
./test3.txt

$ find . -type f -print0 | xargs -0 ls
./test1.txt ./test2.txt ./test3.txt

$ find . -type f -exec ls '{}' +
./test1.txt ./test2.txt ./test3.txt

$ find . -type f -print0 | while read -r -d '' file; do ls "$file"; done
./test1.txt
./test2.txt
./test3.txt

�@���̂悤�ɃR�}���h�̑g�ݍ��킹�ɂ����āA�u�t�@�C�����̃O���[�v�����x��ls�R�}���h�Ŏ��s�v���u�t�@�C������ls�R�}���h�����s�v���邩���قȂ��A�������x���ς����Ă��܂��B

find�R�}���h��p�����֗���UNIX�e�N�j�b�N��

�@�Ō��ɁAfind�R�}���h��p���������‚��̗����Љ�Ă����܂��B�Ȃ��A�����ɏЉ���������ȊO�ɂ��A�l�X�ȏ������������܂��B�Ɩ��ɕ����ĉ��p���Ȃ��痘�p���Ă��������B

core�A#*�A*~���ꊇ�폜����

�@Emacs��p���Ă����ƁA�e�L�X�g���ۑ������ۂɁu�t�@�C����~�v�A�t�@�C�����ҏW�����ۂɁu#�t�@�C����#�v�Ƃ����o�b�N�A�b�v�t�@�C�����쐬�����܂��B�܂��AUnix�ELinux�v���Z�X���ُ��I�������Ɓucore�v�t�@�C�������������܂��B�������̃t�@�C�������x�ɍ폜�������ꍇ�ɂ́A���̂悤�Ɏw���ł��܂��B

$ find . \( -name core -o -name '#*' -o -name '*~' \) -exec rm '{}' +

�@�u\(�v�Ɓu�R�}���h�v�A�u�R�}���h�v�Ɓu\)�v�̊Ԃɂ̓X�y�[�X������K�v�������܂��B

�@xargs�R�}���h��p�����ꍇ�́A���̂悤�Ɏw���ł��܂��B

$ find . \( -name core -o -name '#*' -o -name '*~' \) -print0 | xargs -0 rm

�@find�R�}���h�̔��ʎ��u-o�v�́A�u-or�v�ł��\���܂����B

�@�Ȃ��Afind�R�}���h�́u-delete�v�A�N�V���������p�ł����ꍇ�́A���̕��@���ł������ł��B

$ find . \( -name core -o -name '#*' -o -name '*~' \) -delete

���[�U�[�����L�����t�@�C���݂̂�����č폜����

$ find . -type f -user $(whoami) -exec rm '{}' +

�@xargs�R�}���h��p�����ꍇ�́A���̂悤�Ɏw���ł��܂��B

$ find . -type f -user $(whoami) -print0 | xargs -0 rm

�@whoami�R�}���h�́A���[�U�����\�����܂��B

����Č��‚������S�t�@�C�����ړ�����

�@����Č��‚������S�t�@�C�����u/var/tmp/�v�ȉ��Ɉړ����܂��B

$ find . -type f -print0 | xargs -0 mv -t /var/tmp/

�@mv�R�}���h�́u-t�v�܂��́u--target-directory�v�I�v�V�����ŁA�ړ����f�B���N�g�����w���ł��܂��B�Ȃ��A���̗��ł̓f�B���N�g���\�����ێ������A�t�@�C���݈̂ړ����܂��B�����̃t�@�C�������݂����Ə㏑���������ȂNJ��Ғʂ��ɓ����Ȃ����߁A���ӂ��K�v�ł��B

����4
�@xargs�R�}���h�Ɂu-i�v�iFreeBSD�ł́u-I�v�j�I�v�V�������‚����ƁA�p�C�v�œn���ꂽ���ʂ��u{}�v�œW�J�ł��܂��B���̂��߁A���̎w�����@�ł����삵�܂��B

$ find . -type f -print0 | xargs -0 -i mv '{}' /var/tmp/

�@FreeBSD�̏ꍇ�A�f�t�H���g�Łu{}�v�œW�J�ł��Ȃ����߁A���̂悤�Ɏw�肵�܂��B

$ find . -type f -print0 | xargs -0 -I % mv % /var/tmp/

�@�u-I�v�I�v�V�����̌��̕����i���ł́u%�v�j���Afind�R�}���h�Ō��‚������t�@�C�����ɒu�����Ă��܂��B

�@���������̕��@�́A1�t�@�C���Â�mv�R�}���h�����s���邽�߁A�������x���Ȃ��܂��B
����5
�@FreeBSD�ł́Axargs�R�}���h�́u-J�v�I�v�V������p�����ƁA�u-I�v�I�v�V�������荂���ɏ����ł��܂��B

$ find . -type f -print0 | xargs -0 -J % mv % /var/tmp/

�@���̗��ł́A����Č��‚������t�@�C�����̃O���[�v���u%�v�ɒu��������mv�R�}���h�����s���Ă��܂��B

����Č��‚������S�t�@�C�����f�B���N�g���\�����ƃR�s�[����

�@����Č��‚������S�t�@�C�����A�f�B���N�g���\�����ێ������܂܁u/var/tmp/�v�ȉ��ɃR�s�[���܂��B�����́A�t�@�C���P�ʂŃo�b�N�A�b�v�������ꍇ�ɁA���ɗ����܂��B�t�@�C���̃o�b�N�A�b�v�ŗ��p����cpio�R�}���h��p�����Ǝ��̂悤�Ɏw���ł��܂��B

$ find . -type f -print0 | cpio -pd0 /var/tmp/

�@�u-p�v�I�v�V�����́A�t�@�C�����ʂ̃f�B���N�g���ɃR�s�[���܂��B�u-d�v�I�v�V�����́A�K�v�ɉ����ăf�B���N�g�����쐬���܂��B�Ȃ��Acpio�R�}���h�́u-0�v�I�v�V������GNU��cpio�R�}���h�ȊO�ł͎g���܂����B

�T�C�Y�Ɗg���q�������Ƀt�@�C��������A���ʂ��ʂ̃t�@�C���ɏ�������

�@�u~/public_html�v�ȉ��ŁA�g���q���u.gif�v���ƒT�C�Y��100K�o�C�g�ȏ��̃t�@�C�����T���A���ʂ��uresult.txt�v�t�@�C���ɏ������݂܂��B

$ find ~/public_html \( -name "*.gif" -a -size +100k \) -fprint result.txt

find�R�}���h�́u���‚������܂����v���\�����Ȃ�

�@���ʃ��[�U�[�ŁA���[�g�f�B���N�g�����u/etc�v�f�B���N�g���Ȃǂ��ΏۂɌ�����ƁuPermission denied�v�Ƃ����x�����b�Z�[�W�����ʂɕ\�������܂��B����ʂ̈ꗗ���x�����b�Z�[�W�ɖ��܂��Ă��܂��A����ʂ̊m�F�����ςȏꍇ�ɂ́A���̕��@�ŕ\�������Ȃ��Ȃ��܂��B

$ find / -name user �� �uuser�v������
find: /usr/src: Permission denied �� �x�����b�Z�[�W
find: /usr/share/skel/MailBox: Permission denied �� �x�����b�Z�[�W
find: /usr/obj: Permission denied �� �x�����b�Z�[�W
(��)
/home/user

$ find / -name user 2>/dev/null
/home/user

�@�u2>/dev/null�v���w�肵�āA�x�����b�Z�[�W���k���f�o�C�X�֏o�͂��Ă��܂��B

grep�����Ƃ��Ɂu.svn�v�u.git�v�f�B���N�g�������O����

�@�����̕�������������ۂɕs�v�ȃf�B���N�g���������Ώۂ����O�����@�ł��B

grep -rn 'hoge' ./ --exclude-dir=.git

�Ȃ��A ag (The Silver Searcher) ���g���Ƃ��荂���ɂ��̗v��������܂��B

�܂Ƃ�

�@������find�R�}���h��grep�R�}���h�A������xargs�R�}���h��p�����u�t�@�C���E�t�@�C�����e�̌����v�Ɋւ����e�N�j�b�N���Љ�܂����B�����Љ���ق��ɂ��Aawk��perl��p���邱�ƂŁA�Ȍ��Ȏw���⍂���ȏ������”\�ȏꍇ�������܂��B

�@�����ȍ~���A�e�[�}���Ƃ�UNIX�e�N�j�b�N���Љ�Ă����\���ł��B

スポンサードリンク