1. 현재 위치에서 파일의 개수 세기
ls -l | wc -l
2. 현재 디렉토리의 하위 파일 개수 세기
find . -type f | wc -l
3. 하위폴더내 모든 특정 확장자 파일 이동
find . -name "*.jpg" -exec mv {} 경로 \;
4. 폴더내 리스트를 받아오려면?
dir 변수에 `ls ./directory`를 변수로하여 폴더내 폴더명 혹은 파일명들을 받아올수 있다.
for dir in `ls ./directory`
do
### do job here
echo $dir
done
5. 실행한 명령어를 변수로 다시 받을려면? -exec
find . -name *.png를 하면 png파일들이 찾아진다. 이 png파일들을 대상으로 어떤 명령을 실행시키고 싶을때,
find . -name *.png -exec mv {} ../../newpath \;
위 처럼 -exec를 사용하면 앞에 사용한 명령어를 변수로 받아올 수 있다.
"{}" 애를 통해서, 괄호자리에 명령줄이 들어가게된다.
결국 mv {find . -name *.png} ../../newpath 처럼 실행되는 것이다.
명령 끝줄에 \; 를 꼭 적어줘라
ex2) myfile_11.jpg, myfile_12.jpg 등등 하위파일 싹다 찾아다가 삭제하기
find . -name myfile_*.* -exec rm {} \;
6. 파일명 일괄변경, rename으로 에러 뜰때,
rename으로 할때 아래와 같이 할수 있는데, 파일 많으면 에러뜬다 (9만개 에러발생..!)
이럴땐 아래 접두사 추가하기 방법으로 진행한다.
find . -name '*.png' -exec rename 's/gt_//g' {} \;
7. 폴더 내 하위 파일에서 특정 문자들을 제거하거나 치환할 경우
find . -type f -name "*.json" -print0 | xargs -0 sed -e 's/\\uace0//g'
8.1 파일명 앞에 접두사(prefix) 추가
for file in *.txt; do mv "$file" "yourPrefix$file"; done;
예를 들어 파일명 앞에 언더스코어 "_" 를 일괄로 추가하려면
"abc.txt" -> "_abc.txt" ...
for f in *.txt; do mv "$f" "_$f"; done;
활용예시2
for i in `cat ./filtered_list/train.txt`; do cp "./image/$i.png" "./tempimg/" ; done;
txt파일을 읽어, txt파일내 이미지 파일들에대해 cp작업을 수행한다.
` 와 ' 에 유의하자
8.2 접미사(suffix) 추가
파일명 뒤에 언더스코어 "_" 를 일괄로 추가하려면
"abc.jpg" -> "abc_.jpg" ...
for f in *.jpg; do mv -- "$f" "${f%.jpg}_.jpg"; done;
9. 확장자 변경
for f in *.예전확장자; do mv -- "$f" "${f%.예전확장자}.새확장자"; done;
예를 들어 html 확장자를 php로 변경하려면
"abc.html" -> "abc.php" ...
for f in *.html; do mv -- "$f" "${f%.html}.php"; done;
10. 접두어 일괄 삭제
abc로 시작하는 파일명에서 abc를 제거하기
rename abc "" abc*
11. 파일 내부 문자열 일괄 치환 sed !
cat 001.json | sed -e 's/치환대상/치환목표/g'
옵션 : -e : 출력만 한다. / -i 원본에 반영한다.
따라서 -e로 테스트하고 -i로 반영할것
[테스트할때]
cat 001.json | sed -e 's/ motor/motor/g' >> test.json
cat 파일명 | sed -e 's/원본문자열/치환할문자열/g' >> test.json
[원본에 저장할때]
sed -i 's/ motor/motor/g' 001.json
sed -i 's/원본문자열/치환할문자열/g' 작업할파일
cut 사용
cut -d '.' -f0
-d : delimiter , -f : delimiter뒤로 n번째
ex: cat train_pairs.txt | cut -d ' ' -f 1
공백 앞쪽 가져오기
gpt가만들어준 문장
find /path/to -type f -name "*.txt" -exec sh -c 'base=${1%.*}; grep -q "^7 " "$1" && rm "$1" "${base}.jpg"' _ {} \;
txt 출력해서, 파일들 옮기기
cat truelist.txt | cut -d':' -f1 | while read filename; do mv "./image/${filename}.png" ./1; done
ls train/2 | shuf | head -n 150000 | xargs -I {} mv train/2/{} train_temp
shuf =shuffle
'이거슨 상식!' 카테고리의 다른 글
ffmpeg 커맨드 구간 편집, 크기변환 (0) | 2022.08.12 |
---|---|
초짜 이미지 웹크롤링 (22.05.24 동작확인) (0) | 2022.05.24 |
[2] 이미지관련? (0) | 2022.04.17 |
[1] 프로세스 스레드차이, 문맥전환에 소요되는 시간 (0) | 2022.04.17 |
POSTMAN curl 변환 (매우간단) (0) | 2022.01.21 |