大緻說一下 所處理目錄裡的檔案内容如下
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########################################