xargs, sed, mv를 이용한 파일 변경

다음과 같이 파일이 있다고 하자.

# ls
a.txt  b.txt  c.txt  d.txt  e.txt  f.txt

그러면, 이것의 확장자를 txt에서 sql로 바꾼다고 하면, a.txta.sql이라는 파일 이름 2개가 필요하다. 그런데

# ls | sed -e "s/txt/sql/g"

를 하면, a.txt는 나오지 않는다. 이때 사용하는 것이 sedp명령으로,

# ls | sed -e "p;s/txt/sql/g"
a.txt
a.sql
b.txt
b.sql
c.txt
c.sql
d.txt
d.sql
e.txt
e.sql
f.txt
f.sql

이렇게 된다. 이것을 xargs-n2명령을 이용해서 넘겨주면 된다.

# ls | sed -e "p;s/.txt$/.sql/" | xargs -n2 mv

출처

댓글