On Jan 6, 3:59 pm, Xuân Tính <xuan...@gmail.com> wrote: > Em còn noob lắm nên nghỉ ra cái này: > > for i in *; do
Với vòng lặp này thì sẽ xảy ra chuyện file cũ đè file mới > j=${#i}; l=`echo $((j-19))`; Ah!! Đếm số ký tự rồi trừ đi 19 ký tự cuối cùng (giống pattern nhau!) > k=`echo ${i:0:l}tar.gz`; mv $i $k; Lấy đi phần đầu tiên (bỏ đi các ký tự cuối) > done > Dùng sed với awk thi có vẻ gọn hơn nhưng cú pháp f*ck tạp quá nên làm biếng Cách ở trên gọn. Chỉ vướng mắc ở chỗ chuyện các tập tin đè nhau. Cách của mình đã làm đây <pre> level=0; ls -tr *.tar.gz | grep "\.$level\.2012" | while read _file; do mv -iv $_file "${_file%%.*}".$level.tar.gz; done </pre> Cách này không giải quyết đồng loạt cho các tập tin level > 0 (Ví dụ *etc.1.201201051026.tar.gz*), nhưng có thể dùng vòng for khác để xử lý. Giải thưởng sẽ được trao cho bác Tính ^^ > Vào 14:37 Ngày 06 tháng 1 năm 2012, Anh K. Huynh <anh.p...@gmail.com> đã > viết: > > > > > > > > > On Fri, 6 Jan 2012 14:29:10 +0700 > > Linux <linux...@gmail.com> wrote: > > > > =,= > > > em đang nghi ngờ có tính đố vui có thưởng trong này > > > Sao lại nghi ngờ nhỉ ^^ > > > Ghi chú thêm là trong bài toán sau khi đổi tên sẽ có những tập tin > > trùng nhau: những tập tin cũ hơn sẽ bị xóa nhé :) > > > -- > > Anh K. Huynh > > System administrator > > > -- > > Group Email: archl...@googlegroups.com > > Unsubscribe: archlinuxvn...@googlegroups.com > > Options:http://groups.google.com/group/archlinuxvn