㈠ 你用vi編輯器編寫了一個腳本文件shell.sh,你想將改文件名稱修改為shell2.sh,什麼命令可以實現。
使用vi編輯在ks.sh裡面編程腳本,最終得到三個數相加的和
㈡ sh 腳本名字和./腳本名字有什麼區別
sh xxx
用 sh 這個shell (sh一般指系統默認shell,比如 bash, ksh, Csh 等都有可能) 來解釋和運行 xxx 這個腳本。核碰xxx 文件不必具有可執行屬性(chmod +x)
./xxx xxx必須具備可執行屬性,如果此時的 xxx 是一個文本文件(腳本),那麼按照 xxx 的第一行所指定的命令來解釋和執行 xxx, 如果xxx 文件中沒有指定,默坦氏並認按照 /bin/sh 來解釋和執行讓跡。 xxx 需要在第一行用
#!/path/to/mmm
的方法來說明要用 mmm 命令來解釋和執行 自身。
比如如果是 bash 腳本,為 #!/bin/bash
perl腳本, #!/usr/bin/perl
python腳本, #!/usr/bin/python
等等。
㈢ liunx 命令腳本 sh 根據條件實現重命名
#!/bin/sh
cd /storage/emulated/0/DCIM/MadV360/
vifile=`ls *.vi`
viname=`echo ${vifile%%.*}`
mv *.jpg $viname.jpg
mv $viname.jpg /storage/emulated/0/DCIM/FTP/
rm -f *
可以擴展到遍歷整個根目森基州錄,不過此蔽要自己鋒李想想,方法很簡單
㈣ 如何在shell腳本中修改添加替換指定文件中的內容
1、可以藉助.shell命令執行另一個腳本文件或者用變數保存。比如a.sh和b.sh,a.sh中調用b.sh的代碼,一起輸出"hello world"的字元串。b.sh的代碼如下echo " world!"。
㈤ 將shell修改為bat腳本
我不是很了解linux的代碼,所以有以下幾個問題要搞清楚一下。
for j in {1..5}這樣的命令是不是for循環賦予變數$j為1至5,這幾個數字?
d=$1
f=$2是不是獲取test.sh中$i $j對應的值,也就是1至桐圓5,這幾個數字?d=$1=$i 和 f=$2=$j
${d}是獲取什麼的值?日期? ${f}又是獲取什麼的值?
${kk}應該是for kk in {1..10}中賦予的數字對吧?
順便查了缺雹一下資料touch命令局扮塌是修改文件或文件夾的創建,修改等日期的,但是Windows命令中沒有類似的命令啊!這怎麼整?
㈥ sh腳本改bat腳本 請高手們幫我改一下 萬分感謝 sh代碼如下
@echo off
set MAPSERV="/path/to/my/mapserv"
set MAPFILE="/path/to/返晌my/mapfile.map"
if %REQUEST_METHOD% = "GET"漏緩鋒
if %QUERY_STRING% == ""
set QUERY_STRING="map=%MAPFILE%"
else
set QUERY_STRING="map=%MAPFILE%&%QUERY_STRING%"
exec %MAPSERV%
else
echo "Sorry, I only understand GET requests."哪舉
exit 1
# End of Script
㈦ linux下開發腳本搜索子目錄批量更改文件名
前言
本文主要給大家介紹了關於Linux shell用sed批量更改文件名的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
示例
去除特定字元
目標:將 2017-01-01.jpg、2018-01-01.jpg 改為 20170101.jpg、20180101.jpg
方法:將所有 - 替換為空
for file in `ls | grep .jpg`
do
newfile=`echo $file | sed 's/-//g'`
mv $file $newfile
done
這里使用sed進行標准輸出的字元串替換,其通用格式如下:
stdout | sed 's/pattern/replace/'
上述示例中,在末缺弊尾添加g用於替換所有匹配項,而不僅僅替換第一個匹配項。
中間插入字元
目標:將 book01.txt、paper02.txt 改為 book-01.txt、paper-02.txt
方法:用分組匹配分別獲取待插入位置兩側的字元串,再通過反向引用實現替換
for file in `ls | grep .txt`
do
newfile=`echo $file | sed 's/\([a-z]\+\)\([0-9]\+\)/\1-\2/'`
mv $file $newfile
done
分析
上述示例首先通過 ls 和 grep 命令得到待改名的文件列表,然後用 sed 命令進行字元串的替換,最後再使用 mv 命令來完成文件名的更改。
獲取待改名文件列表的方法有很多,可以通過 find 命令,也可以直接給出字元串,我們將在下文中提到。
注意 for 循環後面的 ls | grep .txt,這條命令用兩個反單引號括了起來,與 $(ls | grep .txt) 的作用相同,被包圍的字元串會被當作命令執行,然後返回字元串結果。
文件名包含空格的解決方法
我們可以直接將文件列表寫到 for 循環中,而不是通過命令來得到,例如:
for file in "file1 file2 file3"
do
...
done
可以看到 for 循環是通過空格來分割字元串,因此如果待更改的文件名中包含空格的話,就會被拆分成多個文件名,從而出錯。
要解決這個問題,我們可以將 IFS(內部欄位分隔符)設置為換行符 \n,這樣一來,for 循環就會按行來獲取變數的值,確保每次獲取的確實是一個完整的文件名。
設置 IFS 變數的命令需要放在 for 循環之前:
IFS=$'\n'
for file in `ls`
do
...
done
也可以直接使用 while read 命令一次讀取一行到變數 file 中:
ls | grep "*.txt" | while read file
do
...
done
使用 find 獲取文件列表
之前的示例中,我們是通過 ls 命令來獲取文件列表。該命令只能獲取某個目錄的文件,而且沒法進行多種條件的篩選冊消。
而一說到文件的查找,不得不提到功能強大的 find 命令。該命令可以在多個層次的目州扮知錄中查找文件,並能夠設定諸如創建時間、文件大小、所有者等多種條件,查找起文件來特別方便靈活。
用 find 命令來獲取文件列表,再用 sed 命令配合正則表達式來修改文件名,這兩個命令的結合幾乎能完成所有常見的批量改名任務。
例如,將所有大於1M,且後綴為txt或jpg的文件,由形如 book_20170101.txt、image_20170101.jpg 的文件改名為 20170101-book.txt、20170101-image.jpg,代碼如下:
for file in `find . -size +1M -name "*_*.txt" -o -name "*_*.jpg"`
do
newfile=`echo $file | sed 's/\([a-z]\+\)_\([0-9]\+\)./\2-\1./'`
mv $file $newfile
done
㈧ linux sh腳本如何批量改名
位置變數當然要外面傳,而握乎且,find "${1}" -exec mv {} \; "echo {} \;這個echo你段顫悉要用來幹嘛洞棚!
[root@iZ23lr8qo67Z ~]# touch 123
[root@iZ23lr8qo67Z ~]# ls
123 shell
[root@iZ23lr8qo67Z ~]# find . -name 123 -exec mv {} 345 \;
[root@iZ23lr8qo67Z ~]# ls
345 shell
㈨ linux shell 怎麼將一個目錄下面文件名字進行改名
#!/bin/bash
pth="/home/cnbubble/test/tt/"#建議寫局對團搭路徑
forfin`ls$pth`
do
sed-i'1i#!/bin/sh'"$pth$f"#使用sed在第一行前加一行
sed-i'1attisql老巧xz_abmy<<!'"$pth$f"#在第一行後再加一行
mv"$pth$f""$pth${f}.sh"#移動文件,相當於重侍或鍵命名
#chmod+x"$pth${f}.sh"#加其他操作,比如更改許可權
done
上的腳本會對要處理的文件夾中所有的文件進行操作,腳本放置此文件夾以外。不然要更改程序,避免操作自身