'Else'에 해당되는 글 3건

Repo recursive copy

Else 2012. 6. 4. 16:44

git root 폴더에 해당하는 dir를 recursive하게 돌면서 cp


repo forall -c 'cp -v  .gitignore ~/project/g1_tdr/${REPO_PATH}'


Shell Script 

#!/bin/sh


DEST=~/project/g1_tdr/android


for file in `find . -name .gitignore`; do

        dir=$DEST"/"`dirname $file`"/.gitignore";

        #echo $file" -> "$dir;

        cp -v $file $dir

done


'Else' 카테고리의 다른 글

JAVA: Read binary file written in C  (0) 2012.03.12
find 사용법  (0) 2012.02.22
블로그 이미지

민둥

,
C에서 쓴 binary file을 Java에서 읽기위해서 온갖 삽질을 하다가..

- encoding문제인가 싶어서 온갖 encoding관련 검색을 하고 변경해봤지만 이건 아니고.
- Java에서 unsigned를 다루지 못해서 생긴 문제인가 싶어서 찾아봤지만 이것도 아니고.
- Big/little endian문제였다는것을 발견... 

Java에서는 Big endian으로만 데이터를 취급한다.
따라서 1) C에서 파일을 작성할때 Big endian으로 써주거나.
아니면 반대로 2) Java에서 읽을때 byte 를 거꾸로 읽어줘야 제대로 된 값을 가져올 수 있다.

나는 C에서 써주는 방법이 좀 더 간단하므로 이 방법을 택했음

1) C에서 작성하는 방법

 #include <arpa/inet.h>
 x = htonl(x);


2) Java에서 읽는 방법
( http://www.blah-blah.ch/it/programming/java-unsigned-int/ )

public static long readBytesLittle2Big(DataInputStream d, int iHowmany) throws IOException {
byte[] b = new byte[iHowmany];
ByteBuffer bb = ByteBuffer.allocate(iHowmany);
for (int x=0;x<iHowmany;x++)
{
b[x] = d.readByte();
}
/*Here I read stuff from disc which is saved in little endian order which I have to convert into big endian*/
for (int x=0;x<iHowmany;x++)
{
bb.put(iHowmany-1-x, b[x]);
}
bb.rewind();
return bb.getInt();
}



'Else' 카테고리의 다른 글

Repo recursive copy  (0) 2012.06.04
find 사용법  (0) 2012.02.22
블로그 이미지

민둥

,

find 사용법

Else 2012. 2. 22. 14:15
find - 파일찾기 

1) 검색 조건


-name filename 파일 이름으로 찾는다. 

-atime +n access time 이 n일 이전인 파일을 찾는다. 
-atime -n access time이 n일 이내인 파일을 찾는다. 
-mtime +n n일 이전에 변경된 파일을 찾는다. 
-mtime -n n일 이내에 변경된 파일을 찾는다. 

-perm nnn 파일 권한이 nnn인 파일을 찾는다. 
-type x 파일 타입이 x인 파일들을 찾는다. 
-size n 사이즈가 n이상인 파일들을 찾는다. 
-links n 링크된 개수가 n인 파일들을 찾는다. 

-user username user이름으로 찾는다. 
-group groupname group 이름으로 찾는다.

2) 처리방법


-print 찾은 파일의 절대 경로명을 화면에 출력한다. 
-exec cmd {};  찾은 파일들에 대해 cmd 명령어를 실행한다.

3) Examples


$ find /user4 -name test* -print
/user4 아래에서 파일이름이 test로 시작하는 모든 파일을 찾아서 화면에 보여준다.

$ find / -name ping -print
root 디렉토리 밑에서 파일이름이 ping인 파일을 찾아 절대 경로명을 화면에 출력한다.

$ find /usr -name *.c -print
/usr 밑에 이름이 .c로 끝나는 모든 파일들을 찾아 경로명을 보여준다.

$ find $home -name who.txt -print
home 디렉토리 아래에 who.txt라는 파일을 찾아 경로명을 보여준다.

$ find . -type d -print
파일 타입이 d인 파일을 찾아 경로명을 화면에 출력한다.

$ find /dev -type c -print
/dev디렉토리 아래에서 파일 타입이 c인 파일을 찾아 경로명을 보여 준다.

$ find . -perm 700 -print
파일 권한이 700인 파일을 찾아준다.

$ find . \ ( -perm 400 -o -perm 200 ) -print
파일 권한이 400인 파일과 200인 파일을 찾아준다. (주의 : "\"의 앞뒤에 space 가 반드시 있어야 한다.)

$ find . -size +1024 -print
파일의 블럭 크기가 1024 이상인 파일을 찾아준다.

$ find . -name core -size +2048 -print
파일 이름이 core이고 크기가 2048블럭 이상인 파일을 찾아준다.

$ find . -user unix01 -print
파일 소유자가 unix01인 파일을 찾아준다.

$ find . -group unix -print
사용자그룹이 unix인 파일을 찾아준다.

$ find . -atime +30 -print
30일 이전에 억세스되었던 파일을 찾는다.

$ find . -mtime -7 -print
7일 이내에 수정된 적이 있는 파일을 찾는다.

$ find . -name core -exec ls -l {} \;
이름이 core인 파일을 찾아서 ls -l 한다.

$ find . -name \*.c -atime +30 -exec ls -l {} \;
30일 이전에 억세스된 파일 중 *.c를 찾아 ls -l 한다.

$ find . -name core -exec rm -i {} \;
현재 디렉토리 밑에서 이름이 core인 파일을 찾아 지운다 (지우기 전에 정말 
지울 지를 물어본다.)

아래는 특정한 문자열을 검색하여 파일명을 출력하여 줍니다. 
$ find . -type f -exec grep "string" /dev/null {} ;
주의할 것은 조건에 맞는 파일의 개수가 많은 경위 쉘의 명령행 버퍼의 범위를 벗어나므로 문제가 생길수 있다는 것입니다.

명령행 버퍼의 오버플로우를 방지하기 위해서 다음과 같이 하십시요.
$ find . -type f | xargs grep "string"

'Else' 카테고리의 다른 글

Repo recursive copy  (0) 2012.06.04
JAVA: Read binary file written in C  (0) 2012.03.12
블로그 이미지

민둥

,