天天PS之二 關於重新命名檔案

2021-09-03 10:07:28 字數 4372 閱讀 3147

今天我們來介紹如何用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...