"Find"의 두 판 사이의 차이

ph
이동: 둘러보기, 검색
26번째 줄: 26번째 줄:
 
== 최근 24시간동안 바뀐 파일 찾기 ==
 
== 최근 24시간동안 바뀐 파일 찾기 ==
 
  $ find /<filesystem_name> -xdev -mtime 0 -ls
 
  $ find /<filesystem_name> -xdev -mtime 0 -ls
http://www-903.ibm.com/kr/techinfo/pseries/tech/techdoc4.html#bb]
+
[http://www-903.ibm.com/kr/techinfo/pseries/tech/techdoc4.html#bb]
  
  
36번째 줄: 36번째 줄:
  
  
*크기가 큰 파일 찾아 sort (출처: http://www-903.ibm.com/kr/techinfo/pseries/tech/techdoc4.html#bb )
+
 
<syntaxhighlight lang="bash">
+
==크기가 큰 파일 찾아 sort==
 
  find / -xdev -size  +2048 -ls |sort -r  +6
 
  find / -xdev -size  +2048 -ls |sort -r  +6
</syntaxhighlight>
+
#(+6 option did not work on CentOS 6)
(+6 option did not work on CentOS 6)
+
[http://www-903.ibm.com/kr/techinfo/pseries/tech/techdoc4.html#bb]
  
  
* find symbolic link files those are not containing 'external' string in their full path.
+
 
<syntaxhighlight lang="bash">
+
== find symbolic link files those are not containing 'external' string in their full path.==
 
  find . -wholename '*external*' -prune -o -type l -exec ls -l '{}' \;
 
  find . -wholename '*external*' -prune -o -type l -exec ls -l '{}' \;
</syntaxhighlight>
+
 
 +
 +
$ # prints only one line
 +
$ find / -name blabla\* -print -quit
 +
$
 +
$
 +
$ # execute two (or more) statements
 +
$ # simple. use two (or more) exec commands.
 +
$ find . -name \*jpg -o -name \*JPG -exec echo \{} \; -exec face-detect-using-xml.exe -x cascade.xml \{} \;
  
  
 
<source lang='bash'>
 
$ # prints only one line
 
$ find / -name blabla\* -print -quit
 
$
 
$
 
$ # execute two (or more) statements
 
$ # simple. use two (or more) exec commands.
 
$ find . -name \*jpg -o -name \*JPG -exec echo \{} \; -exec face-detect-using-xml.exe -x cascade.xml \{} \;
 
</source>
 
  
 
== run multiple exec ==
 
== run multiple exec ==
<pre>find . -name "*.txt" -exec echo {} \; -exec grep banana {} \;</pre>
+
find . -name "*.txt" -exec echo {} \; -exec grep banana {} \;
 
첫번째 명령 성공해야 두번째도 실행.
 
첫번째 명령 성공해야 두번째도 실행.
 
무조건 하려면 아래와 같이.
 
무조건 하려면 아래와 같이.
<pre>find . -name "*.txt" \( -exec echo {} \; -o -exec true \; \) -exec grep banana {} \;</pre>[http://stackoverflow.com/a/6043896/766330]
+
find . -name "*.txt" \( -exec echo {} \; -o -exec true \; \) -exec grep banana {} \; [http://stackoverflow.com/a/6043896/766330]
<pre>find . -type d -exec sh -c "echo -n {}; echo -n ' x '; echo {}" \;</pre>
+
find . -type d -exec sh -c "echo -n {}; echo -n ' x '; echo {}" \;
 
[http://stackoverflow.com/a/13764308/766330]<br>
 
[http://stackoverflow.com/a/13764308/766330]<br>
 
다음과 같이 하는수도 있다.
 
다음과 같이 하는수도 있다.
<pre>find ... | while read -r file; do
+
find ... | while read -r file; do
 
     echo "look at my $file, my $file is amazing";
 
     echo "look at my $file, my $file is amazing";
done</pre>또는
+
done또는
<pre>while read -r file; do
+
while read -r file; do
 
     echo "look at my $file, my $file is amazing";
 
     echo "look at my $file, my $file is amazing";
done <<< "$(find ...)"</pre>
+
done <<< "$(find ...)"
 
[http://stackoverflow.com/a/37638504/766330]
 
[http://stackoverflow.com/a/37638504/766330]

2017년 4월 10일 (월) 02:48 판

모든 실행파일 찾기

일단 file * | grep executable 이 제일 간단함. find명령으로는

find . -depth 1 -perm -u+x ! -type d

symbolic link까지 찾는다는게 문제. ! -type l 로 거를 수 있으나 ln의 source file이 executable일 수 있음. 이게 더 낫다.

find . -executable -type f


find only ASCII text file

find . -type f -exec grep -Iq . {} \; -and -print

[1]


오늘 바뀐 파일 찾기

$ touch -t `date +%m%d0000` creteria ;  find . -newer creteria -type f


최근 1분간 바뀐 파일 찾기

$ find . -mmin -1


최근 24시간동안 바뀐 파일 찾기

$ find /<filesystem_name> -xdev -mtime 0 -ls

[2]


찾아서 etags

find . -name '*.cpp' -or -name '*.h' | xargs etags --append

emacs manual에는

find . -name "*.[chCH]" -print | etags -


크기가 큰 파일 찾아 sort

find / -xdev -size  +2048 -ls |sort -r  +6
#(+6 option did not work on CentOS 6)

[3]


find symbolic link files those are not containing 'external' string in their full path.

find . -wholename '*external*' -prune -o -type l -exec ls -l '{}' \;


$ # prints only one line
$ find / -name blabla\* -print -quit
$
$
$ # execute two (or more) statements
$ # simple. use two (or more) exec commands.
$ find . -name \*jpg -o -name \*JPG -exec echo \{} \; -exec face-detect-using-xml.exe -x cascade.xml \{} \;


run multiple exec

find . -name "*.txt" -exec echo {} \; -exec grep banana {} \;

첫번째 명령 성공해야 두번째도 실행. 무조건 하려면 아래와 같이.

find . -name "*.txt" \( -exec echo {} \; -o -exec true \; \) -exec grep banana {} \; [4]
find . -type d -exec sh -c "echo -n {}; echo -n ' x '; echo {}" \;

[5]
다음과 같이 하는수도 있다.

find ... | while read -r file; do
   echo "look at my $file, my $file is amazing";
done또는
while read -r file; do
   echo "look at my $file, my $file is amazing";
done <<< "$(find ...)"

[6]