天天看點

shell 批量處理目錄下的檔案(改名 删除)

大緻說一下 所處理目錄裡的檔案内容如下

20111130102504289.flv  20111130103705649.flv  20111130104629277.flv

執行完yamdi(處理視訊的一種工具)這一步後是下面這種形式

tmp_20111130102555254.flv  tmp_20111130103855301.flv

20111130102504289.flv  20111130103705649.flv  

第二步删除的是以2011開頭的這些檔案 執行完得到結果如下

tmp_20111130102555254.flv  tmp_20111130103855301.flv  tmp_20111130104944916.flv  

第三步就是把tmp開頭的檔案去掉tmp_這個字段變成如下形式

20111130102555254.flv  20111130103855301.flv  20111130104944916.flv  

#!/bin/bash

#ls /opt/test/20111204_import

for x in `ls /opt/test/20111201_import`  

do

   yamdi -i $x -o tmp_$x -c "modify by mytv365.com"

done

cd /opt/test/20111201_import

rm -rf 2011*

echo "delete ok"

for file in `ls /opt/test/20111201_import`

    mv $file `echo $file | sed 's/tmp_//g'`

echo "all is ok"

說說 腳本執行過程中遇倒的問題 yamdi由于處理的目錄裡面檔案數目過多 檔案過大 shell有可能處理不過來 而直接調到第二步去  可能是與shell處理能力有關吧 腳本本身沒有問題 記錄下來主要就是學了怎麼批量修改目錄下的檔案名

#########################################2014-03-03#####################################

使用xargs批量重命名檔案名

[root@mail home]#ls *.sql

test.20121225.patch.sql test.20121225.revert.sql

将/home目錄下所有.sql結尾的檔案重名為test.20121225.patch.sql.bak  test.20121225.revert.sql.bak

指令如下

[root@mail home]# ls *.sql |  xargs -t -i mv {} {}.bak  -t參數 回顯指令

mv test.20121225.patch.sql test.20121225.patch.sql.bak

mv test.20121225.revert.sql test.20121225.revert.sql.bak

查詢驗證

[root@mail home]# ls *.bak

test.20121225.patch.sql.bak  test.20121225.revert.sql.bak

############################################xargs########################################

繼續閱讀