今天我們來介紹如何用ps來重新命名檔名,重新命名檔案在我們維護系統中時需要經常遇到的問題,先衝命名檔案,然後打包做備份。。。
廢話不說了,下面來看效果,先用shell來演示:
批量修改資料夾下的檔案,假設有5個檔案,abcd.txt,abce.txt,abcf.txt,abcg.txt,abch.txt,下面我們來修改它們的檔名
[root@virtual shell]# find -name "*.txt" -printf %f\\n |awk -f'.' '' |xargs -i{} mv {}.txt aa_{}.txt
[root@virtual shell]# find -name "*.txt" -printf %f\\n |awk -f'.' '' |xargs -i{} mv {}.txt aa_{}.txt
[root@virtual shell]# ls
aa_abcd.txt aa_abcf.txt aa_abch.txt find.tx
aa_abce.txt aa_abcg.txt file mv.sh
[root@virtual shell]# ll
total 12
-rw-r--r-- 1 root root 0 jul 8 10:37 aa_abcd.txt
-rw-r--r-- 1 root root 0 jul 8 10:37 aa_abce.txt
-rw-r--r-- 1 root root 0 jul 8 10:37 aa_abcf.txt
-rw-r--r-- 1 root root 0 jul 8 10:37 aa_abcg.txt
-rw-r--r-- 1 root root 0 jul 8 10:37 aa_abch.txt
看到上面的效果了吧,下面來逐步演示上面的命令效果,慢慢往下看。。。
[root@virtual shell]# find -name "*.txt"
##查詢左右以.txt結尾的檔案
./aa_abcd.txt
./aa_abcf.txt
./aa_abch.txt
./aa_abcg.txt
./aa_abce.txt
[root@virtual shell]# find -name "*.txt" -print
##列印以.txt結尾的檔案
./aa_abcd.txt
./aa_abcf.txt
./aa_abch.txt
./aa_abcg.txt
./aa_abce.txt
[root@virtual shell]# find -name "*.txt" -printf %f\\n
##列印以.txt結尾的檔案,去掉路徑
aa_abcd.txt
aa_abcf.txt
aa_abch.txt
aa_abcg.txt
aa_abce.txt
[root@virtual shell]# find -name "*.txt" -printf %f\\n |awk -f'.' ''
##awk的左右是去掉.txt
aa_abcd
aa_abcf
aa_abch
aa_abcg
aa_abce
[root@virtual shell]# find -name "*.txt" -printf %f\\n |awk -f'.' '' | xargs -i{} mv {}.txt bb_{}.txt
#xargs的{}必須要和-i引數結合一起使用,前面查詢結果就是{}的內容,最後是mv的修改檔名
[root@virtual shell]# ll
total 4
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abcd.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abce.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abcf.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abcg.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abch.txt
-rwxr-xr-x 1 root root 112 jul 8 15:22 mv.sh
[root@virtual shell]#
在shell中還有乙個比較簡單的方法來實現修改檔名
[root@virtual shell]# ll
total 4
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abcd.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abce.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abcf.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abcg.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 bb_aa_abch.txt
-rwxr-xr-x 1 root root 112 jul 8 15:22 mv.sh
[root@virtual shell]# rename bb_aa cc bb_*
[root@virtual shell]# ll
total 4
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abcd.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abce.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abcf.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abcg.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abch.txt
-rwxr-xr-x 1 root root 112 jul 8 15:22 mv.sh
[root@virtual shell]#
很簡單吧,rename 需要修改的部分 修改後的樣子 原來的樣子(支援萬用字元)
shell的2個方法都是很簡單的命令,我們沒有通過程式設計的方式來解決,在python中關於重新命名就更簡單了,下面看下效果:
in [1]: import os
in [2]: ll
total 4
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abcd.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abce.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abcf.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abcg.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abch.txt
-rwxr-xr-x 1 root root 112 jul 8 15:22 mv.sh*
in [3]: os.ren
os.rename os.renames
in [3]: os.rename('cc_abcd.txt','dd_cc_abcd.txt')
rename(old,new) 就是他的用法
in [4]: ll
total 4
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abce.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abcf.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abcg.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 cc_abch.txt
-rw-r--r-- 1 root root 0 jul 8 15:35 dd_cc_abcd.txt
-rwxr-xr-x 1 root root 112 jul 8 15:22 mv.sh*
上面演示的很簡單的重新命名單個檔名,至於用python批量充滿檔名的話,我曾經寫過一篇部落格
請看這裡是如何實現的。。。
今天就介紹到這裡,希望能給你的學習和工作有幫助。。。
天天PS之二 關於重新命名檔案
今天我們來介紹如何用ps來重新命名檔名,重新命名檔案在我們維護系統中時需要經常遇到的問題,先衝命名檔案,然後打包做備份。廢話不說了,下面來看效果,先用shell來演示 批量修改資料夾下的檔案,假設有5個檔案,abcd.txt,abce.txt,abcf.txt,abcg.txt,abch.txt,下...
C 學習筆記之二 關於「引用」的總結
變數名實質上是一段連續儲存空間的別名,是乙個標號,類似於房間號。在程式中,可以通過變數申請記憶體空間,通過變數的名字可以使用記憶體空間。引用的概念可以看作是乙個已經宣告的變數的乙個 別名 這是c 中新加入的,屬於c 的語法範疇。引用的使用語法 type name var 使用示例 這裡函式myswa...
關於FTP和Sftp上傳檔案和重新命名檔案
公司需求是寫乙個上傳檔案的頁面,一開始用ftp的上傳方法,但是沒有成功 後來發現公司用的伺服器是sftp協議的 而sftp的寫法和ftp 的寫法不一樣。下面記錄這兩種寫法 另外注意引入jar包 jsch.jar sftp的上傳檔案的寫法 host 上傳的 ip port 介面 ftp預設21,sft...