寫一個(gè)函數(shù),函數(shù)的參數(shù)是目錄路徑字符串
專業(yè)領(lǐng)域包括網(wǎng)站建設(shè)、網(wǎng)站制作、商城網(wǎng)站制作、微信營銷、系統(tǒng)平臺開發(fā), 與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,創(chuàng)新互聯(lián)建站的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。
函數(shù)內(nèi)使用 ls -s dir_path , 然后for 遍歷循環(huán)
如果是目錄則繼續(xù)調(diào)用自身
如果是文件則答應(yīng)文件名
從執(zhí)行優(yōu)化的角度來講,可以把判斷目錄還是文件的代碼放在循環(huán)外層.
好久沒寫shell了 ,我這也沒環(huán)境測試 , 只能給個(gè)思路,函數(shù)的具體寫法自己找一下資料吧.
另外,find命令可以直接完成你要做的事.
1、作用at命令用來在指定時(shí)刻執(zhí)行指定的命令序列。
2、格式at[-V][-qx][-ffile][-m]time。
3、主要參數(shù)
-V:顯示標(biāo)準(zhǔn)錯(cuò)誤輸出。
-q:許多隊(duì)列輸出。
-f:從文件中讀取作業(yè)。
-m:執(zhí)行完作業(yè)后發(fā)送電子郵件到用戶。
time:設(shè)定作業(yè)執(zhí)行的時(shí)間。time格式有嚴(yán)格的要求,由小時(shí)、分鐘、日期和時(shí)間的偏移量組成,其中日期的格式為MM。DD。YY,MM是分鐘,DD是日期,YY是指年份。偏移量的格式為時(shí)間+偏移量,單位是minutes、hours和days。
擴(kuò)展資料:
學(xué)習(xí)linux注意事項(xiàng)
1、Linux嚴(yán)格區(qū)分大小寫。
2、Linux所有的存儲設(shè)備都必須掛載之后用戶才能使用,包括硬盤、U盤和光盤。
3、Windows下的程序不能直接在Linux中安裝和運(yùn)行。
先設(shè)定實(shí)驗(yàn)環(huán)境:
# 造 5 個(gè) 目錄,每個(gè)目錄下,造 3 個(gè) 文件和兩個(gè)子目錄如下:
cd $HOME/tmp
for i in d1 d2 d3 d4 d5
do
mkdir -p $i
touch $i/1.txt $i/2.txt $i/3.txt
mkdir -p $i/tmp1 $i/tmp2
done
# 檢驗(yàn)測試環(huán)境:
$ ls -lR d1
total 0
-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 1.txt
-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 2.txt
-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 3.txt
drwxr-sr-x 2 wenlee comm 256 Dec 22 10:35 tmp1/
drwxr-sr-x 2 wenlee comm 256 Dec 22 10:35 tmp2/
# 利用下列腳本來實(shí)現(xiàn)你要做的:
cd $HOME/tmp
for i in */1.txt
do
echo "Found $i, save $i and remove everything else under $(dirname $i)/"
save_this_file=$(basename $i)
curr_dir=$(dirname $i)
# 把這個(gè)1.txt暫時(shí)存到/tmp里面去,為了避免已經(jīng)有同樣的檔案名稱在/tmp,加上$$ (i.e. PID)
mv $i /tmp/${save_this_file}.$$
rm -rf $curr_dir
mkdir -p $curr_dir
mv /tmp/${save_this_file}.$$ $curr_dir
done
# 屏幕執(zhí)行輸出如下:
Found d1/1.txt, save d1/1.txt and remove everything else under d1/
Found d2/1.txt, save d2/1.txt and remove everything else under d2/
Found d3/1.txt, save d3/1.txt and remove everything else under d3/
Found d4/1.txt, save d4/1.txt and remove everything else under d4/
Found d5/1.txt, save d5/1.txt and remove everything else under d5/
# 復(fù)驗(yàn)實(shí)驗(yàn)環(huán)境:
$ ls -l d?/*
-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d1/1.txt
-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d2/1.txt
-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d3/1.txt
-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d4/1.txt
-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d5/1.txt
OK?
thanks!
你可以參考如下實(shí)例代碼:function?getFile(file_name)?
local?f?=?assert(io.open(file_name,?'r'))
local?string?=?f:read("*all")
f:close()
return?string
end?function?writeFile(file_name,string)
local?f?=?assert(io.open(file_name,?'w'))
f:write(string)
f:close()
end?--從命令行獲取參數(shù),?如果有參數(shù)則遍歷指定目錄,沒有參數(shù)遍歷當(dāng)前目錄?if?arg[1]?~=?nil?then
cmd?=?"ls?"..arg[1]
else
cmd?=?"ls"?end?print("cmd",?cmd)
--io.popen?返回的是一個(gè)FILE,跟c里面的popen一樣?local?s?=?io.popen(cmd)
local?fileLists?=?s:read("*all")
print(fileLists)
while?true?do?--從文件列表里一行一行的獲取文件名?_,end_pos,?line?=?string.find(fileLists,?"([^\n\r]+.txt)",?start_pos)
if?not?end_pos?then?break?end?--????print?("wld",?line)?local?str?=?getFile(line)
--把每一行的末尾?1,?替換為?0,?local?new?=string.gsub(str,?"1,\n",?"0,\n");
--替換后的字符串寫入到文件。以前的內(nèi)容會清空?????writeFile(line,?new)
start_pos?=?end_pos?+?1?end
#!/bin/bash
((?$#??1?))??echo?"param?is?zero!"??exit?1
[?!?-d?$1?]??echo?"$1?not?path"??exit?1
dir=$1
dir_p="$dir?Directory?:"
cd?$dir
dir=`pwd`
for?i?in?`ls?$dir`
do
if?[?-d?$i?];?then
/tmp/sh/dir_file?$i????????????#我的腳本文件在/tmp/sh中,需要改一下這里
else
dir_p="$dir_p?File?$i"
fi
done
cd?..
echo?$dir_p
實(shí)驗(yàn)結(jié)果:
[root@localhost sh]# ./dir_file /tmp/python/
python_2 Directory : File 1.log File 2.log
python_3 Directory : File 3.log
/tmp/python/ Directory : File p File t.py File y.py
這樣應(yīng)該可以吧,試試看