當前位置:首頁 » 操作系統 » linux批量修改文件

linux批量修改文件

發布時間: 2022-05-15 14:12:23

① windows與linux下 如何批量更改文件名

提供一個在Linux下使用Shell腳本來批量改名的方法,我很久不用Windows系統了,所以只有Linux下的方法。

我這邊在Linux下的測試過程是下面這樣的:

「0」提醒:在終端terminal中,第一步就是把當前目錄切換到文件所在目錄,用cd命令。

「1」新建文件夾,起名為「rename_by_source」,用來放置「改名前的文件」、「shell腳本文件」、「文件名對應文件」,以及保存「改名後的文件」。你在自己電腦上操作時,也建議你把下載下來的需要改名的文件放到一個單獨的文件夾里,這樣容易查看一些。

「2」我新建的「rename_by_source」文件夾中,根據你給的文件名對應表,新建了4個「改名前的文件」,它們是空白文件,只是有個文件名而已,另外,估計文件類型是mp3文件,所以後綴名是.mp3,如果你的文件不是mp3類型的話,請屆時自行在shell腳本文件里更改相關的代碼行。

「3」在文件夾中,新建了「source_name.txt」文件,用來放置(改名前)與(改名後)的對應文件名,跟你給的圖片一樣,也是一行對應一個文件的,只不過,把ren那一列刪除了。如果你要直接使用下面提供的shell腳本的話,也請把你的文件名對應文件中的ren那一列刪除,並且「數字」名的前面不要有空格或其它字元。同時,你的文件名對應文件也請保存為「source_name.txt」這個名稱和格式的文件。

「4」shell腳本文件「rename_by_source.sh」,內容如下:

#!/bin/bash

catsource_name.txt|whilereadLINE
do
ori_name=${LINE:0:7};
des_name=${LINE:8};
cp"${ori_name}.mp3""${des_name}.mp3";
done

解釋一下,第3句是逐行讀取source_name.txt的內容,並賦值給變數LINE,第5句是把該行的第1至第8個字元作為原始文件名,第6句是把該行的第9至末尾的字元串作為新文件名,第7句是在當前文件夾下「復制」(原始文件名.mp3)文件並重命名為(新文件名.mp3)文件。

之所以採用「復制」而不是「移動」命令,主要還是希望避免誤操作。

「5」在前面的文件夾中,新建並保存上述shell腳本文件,然後在終端terminal里賦予此shell腳本文件的可執行許可權,反正也沒有什麼關系,我是直接改為了777許可權:

sudochmod777rename_by_source.sh

「6」在終端中,在當前文件夾下運行上述shell腳本文件:

./rename_by_source.sh

完成。

下面是我這里的測試截圖,

如有幫助,煩請採納,謝謝!

② linux快速修改文件夾及文件下所有文件與文件夾許可權

Linux 許可權繼承 ,使用setfacl劃分許可權
Linux 文件許可權分為 owner group other
如:
drwxrwx--- 5 wdj wdj 4096 09-26 11:51 test
如果用戶soft 想對test目錄有讀寫許可權,一種是將soft用戶加入wdj組中。另一種是將other許可權改為rw
如果想讓此目錄下的文件或目錄繼承父目錄許可權,則每次要chmod -R ....一下
現在可以使用setfacl解決以上問題
setfacl -R -m u:soft:rwx test
[soft@node2 data]#ll
drwxrwx---+ 5 wdj wdj 4096 08-20 14:51 test
這樣soft用戶就可以操作test目錄
setfacl -d --set u:soft:rwx test
-d是讓子目錄繼承父目錄許可權
使用getfacl命令查看acl許可權
[soft@node2 data]# getfacl test
# file: test
# owner: wdj
# group: wdj
user::rwx
user:soft:rwx
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:soft:rwx
default:group::rwx
default:mask::rwx
default:other::---
setfacl -x u:soft test
去掉單個用戶的許可權
setfacl -b test
刪除test目錄的所以acl許可權

③ linux批量修改文件名

#!/bin/bash
####################################
#wrote by dywer, Beijing 01/21/2010
####################################

file_path='/var/down' #文件路徑,結尾無杠
EXT='RPT' #欲改名的文件的擴展名

# 時間格式 [[CC]YY]MMDDhhmm[.ss]
touch -t 201001010000 /tmp/FROM.TAG # 開始時間
touch -t 201001021632 /tmp/TO.TAG # 結束時間
#
for FULL_NAME in `find $file_path/*.$EXT \
-newer /tmp/FROM.TAG -and ! -newer /tmp/TO.TAG`
do
OLD_NAME=${FULL_NAME%.$EXT}
NEW_NAME="${OLD_NAME}0000" #這是你要加的四個零
#NEW_NAME=`echo $FULL_NAME |sed 's#\(^[^.]*\)\..*$#\10000#'` # 另種方法,僅作參考
echo rename "$OLD_NAME.$EXT" to "$NEW_NAME.$EXT"
mv "$OLD_NAME.$EXT" "$NEW_NAME.$EXT"
done
#
/bin/rm /tmp/FROM.TAG
/bin/rm /tmp/TO.TAG
#--------------------------------
RHEL5已經測試過了,怎麼執行腳本相信你一定了解,呵呵,我不多說了

④ 如何在linux下快速批量修改文件夾和文件許可權

方法/步驟
Linux系統中,每個文件的許可權默認是由創建它的使用者所指定的。而且許可權不隨文件環境的改變而變化。換言之,你從別的地方復制、下載、接受過來的文件許可權與它原始的許可權保持一致。例如圖1中的文件是通過藍牙裝置接收的。

當新的操作者的許可權低於文件默認的許可權時,文件是沒有辦法運行的。例如圖2,當試圖運行文件夾中的某個文件時,由於許可權原因,文件被拒絕執行。系統提示:Permission denied.

如果你對要操作的文件許可權沒有特殊要求的話,並確定文件安全可靠,你可以使用chmod 777 [Filename] (中括弧里是你要改的文件名,實際輸入不包括中括弧)命令來快速修改文件許可權為最高(即文件可被讀/寫/運行)。注意:修改成功後,是沒有提示的;修改不成功才有提示。

⑤ linux下如何批量修改文件名

for file in "1.txt" "2.txt" "3.txt"
do
echo $file|rename "s/\.txt/\.doc/g"
done

如果當前目錄下全部的txt都要改成doc,只要
rename 's/\.txt/.doc/' *.txt
請採納。

⑥ linux如何批量修改文件里內容啊。

1.先將你上面的文本保存為文件 ts.txt
2.保存如下腳本為ts.sh並修改可執行許可權。
#!/bin/bash
cat ts.txt |gawk '/IOPATH/ {if (gsub(/\(|\)/,"")) {
t1=$1;t2=$2;t3=$3;
split($4,value1,":");v1=value1[1];v2=value1[2];v3=value1[3];
split($5,value2,":");v11=value2[1];v22=value2[2];v33=value2[3];
print "\t("t1" " t2" " t3 " ("v1*10":"v2*10":"v3*10") ("v11*10":"v22*10":"v33*10"))"};
next} {print}'
3. # ./ts.sh >ts1.txt
4. # more ts1.txt 輸出如下,按照你的要求每個數*10
(CELL
(CELLTYPE "OR2X1")
(INSTANCE U2604)
(DELAY
(ABSOLUTE
(IOPATH A Y (6.5:6.5:6.5) (4.57:4.57:4.57))
(IOPATH B Y (6.08:6.08:6.08) (6.82:6.82:6.82))
)
)
)
(CELL
(CELLTYPE "OAI21XL")
(INSTANCE U2603)
(DELAY
(ABSOLUTE
(IOPATH A0 Y (1.11:1.11:1.11) (0.49:0.49:0.49))
(IOPATH A1 Y (3.11:3.11:3.11) (-0.37:-0.37:-0.37))
(IOPATH B0 Y (1.86:1.88:1.88) (0.62:0.62:0.62))
)
)
)
5. # diff ts.txt ts1.txt 比較結果輸出如下
6,7c6,7
< (IOPATH A Y (0.650:0.650:0.650) (0.457:0.457:0.457))
< (IOPATH B Y (0.608:0.608:0.608) (0.682:0.682:0.682))
---
> (IOPATH A Y (6.5:6.5:6.5) (4.57:4.57:4.57))
> (IOPATH B Y (6.08:6.08:6.08) (6.82:6.82:6.82))
16,18c16,18
< (IOPATH A0 Y (0.111:0.111:0.111) (0.049:0.049:0.049))
< (IOPATH A1 Y (0.311:0.311:0.311) (-0.037:-0.037:-0.037))
< (IOPATH B0 Y (0.186:0.188:0.188) (0.062:0.062:0.062))
---
> (IOPATH A0 Y (1.11:1.11:1.11) (0.49:0.49:0.49))
> (IOPATH A1 Y (3.11:3.11:3.11) (-0.37:-0.37:-0.37))
> (IOPATH B0 Y (1.86:1.88:1.88) (0.62:0.62:0.62))
從以上比較的結果可以看出每個符合要求的值都乘以了10.
希望能幫你解決

⑦ linux怎樣批量修改文件內容

2.1 將文件1.txt內的文字「garden」替換成「mirGarden」
# sed -i "s/garden/mirGarden/g" 1.txt //sed -i 很簡單
2.2 將當前目錄下的所有文件內的「garden」替換成「mirGarden」
## sed -i "s/garden/mirGarden/g" `ls` //其實也就是ls出多個文件名而已

⑧ 如何批量修改linux 文件編碼格式

批量轉換文件的編碼當然是使用命令來轉換咯,如果文件太多還可以寫一個shell腳本進行批量轉換,Linux系統中轉換文件編碼格式的命令是iconv。iconv命令的使用介紹一下,iconv命令很簡單,記住它的三個參數就可以了,下面是它的三個參數:
-f參數:表示from,就是原本的編碼格式
-t參數:表示to,就是後來的新編碼
-o參數:表示輸出文件,就是轉換編碼後的新文件的文件名,如果沒有這個參數新文件會將原來的文件覆蓋掉。
下面是將GB2312編碼的文件轉換成UTF-8編碼的例子:
iconv -f gb2312 -t utf8 mygb2312.txt -o myutf8.txt
這個例子中mygb2412.txt就是要轉換的文件,myutf8.txt就是轉換後的新文件。

⑨ linux怎麼批量修改文件名稱

可以用腳本實現批量文件名稱修改,以perl腳本為例:

注釋:

1. # touch rename.perl //創建一個文件:rename.perl , 內容如下。

2. # chmod +x rename.perl

3. # cp rename.perl /bin/

4. # rename.perl 's/gongxu/leibie/g' * //將目錄中所有文件名中的 gongxu 替換為 leibie。

#!/usr/bin/perl -w
# rename - Larry's filename fixer
#用法: Perl表達式 [要處理的文件名]
$op = shift or die "Usage: rename expr [files]\n";

#如果沒有給出要處理的文件名則從標准輸入讀入
chomp(@ARGV = <STDIN>) unless @ARGV;

for (@ARGV) {
$was = $_;
eval $op; #對待處理的文件名($_)執行用戶輸入的Perl表達式$op
die $@ if $@; #退出 , 如果eval出錯
rename($was,$_) unless $was eq $_;
}

rename腳本的經典實例示範:

% rename.perl 's/\.orig$//' *.orig #移除文件末尾的.orig

% rename.perl "tr/A-Z/a-z/ unless /^Make/" * #所有非Make打頭的文件名大寫轉為小寫

% rename.perl '$_ .= ".bad"' *.f #每個*.f文件後面追加一個.bad

% rename.perl 'print "$_: "; s/foo/bar/ if =~ /^y/i' * #回顯每個待處理的文件名, 等待輸入, 如果用戶輸入以y或Y打頭, 把文件名中的foo替換成bar

% find /tmp -name "*~" -print | rename.perl 's/^(.+)~$/.#$1/' #把 /tmp目錄裡面每個文件名末尾有~的文件名改成以.#開頭

熱點內容
安卓游戲機在哪裡下載 發布:2024-10-10 21:23:48 瀏覽:461
網上買了伺服器怎麼在電腦連接失敗怎麼辦 發布:2024-10-10 21:18:35 瀏覽:962
安卓息屏壁紙在哪個文件夾 發布:2024-10-10 21:11:58 瀏覽:407
eer資料庫 發布:2024-10-10 21:06:08 瀏覽:709
ftp匿名用戶上傳 發布:2024-10-10 21:06:06 瀏覽:754
凱越原始密碼多少 發布:2024-10-10 21:06:04 瀏覽:193
捏脆泥解壓 發布:2024-10-10 20:56:25 瀏覽:705
開瀏覽器顯示腳本錯誤信息 發布:2024-10-10 20:48:14 瀏覽:11
wii安卓模擬器怎麼用 發布:2024-10-10 20:47:35 瀏覽:501
制度宣傳視頻腳本 發布:2024-10-10 20:34:05 瀏覽:576