先設(shè)定實(shí)驗(yàn)環(huán)境:
成都創(chuàng)新互聯(lián)長(zhǎng)期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為雙塔企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作,雙塔網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
# 造 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)測(cè)試環(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/
# 利用下列腳本來(lái)實(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í)間過(guò)長(zhǎng),請(qǐng)指定一個(gè)目錄來(lái)模擬,命令行參數(shù):代表路徑的字符串.
如果認(rèn)可代碼,請(qǐng)加分50,謝謝
----
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.io.*;
final public class FileTree extends JFrame {
public FileTree(File dir) throws HeadlessException {
super("File Tree");
JTree tree;
add(new JScrollPane(tree =new JTree(buildTreeModel(dir))));
tree.setCellRenderer(new FileTreeRenderer());
setSize(400,600);
setVisible(true);
}
private TreeModel buildTreeModel(File dir){
DefaultMutableTreeNode root = new DefaultMutableTreeNode(dir);
walkthrough(dir,root);
return new DefaultTreeModel(root);
}
private static void walkthrough(File f,DefaultMutableTreeNode node){
for (File fle : f.listFiles()) {
DefaultMutableTreeNode n = new DefaultMutableTreeNode(fle);
node.add(n);
if (fle.isDirectory()){
walkthrough(fle, n);
}
}
}
private class FileTreeRenderer extends DefaultTreeCellRenderer {
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel cmp = (JLabel)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
if (value instanceof DefaultMutableTreeNode) {
DefaultMutableTreeNode n = (DefaultMutableTreeNode)value;
Object obj = n.getUserObject();
if (obj instanceof File) {
File f = (File)obj;
cmp.setText(f.getName());
cmp.setForeground(f.isDirectory()?Color.BLUE:Color.BLACK);
}
}
return cmp;
}
}
public static void main(String[] args) {
new FileTree(new File(args[0]));
}
}
摘要: Linux , Shell
Shell中常用循環(huán)有 for , while
for循環(huán)只能用于 固定次數(shù) 的循環(huán),因此不能無(wú)限循環(huán)和用于一些在后臺(tái)守護(hù)進(jìn)程一直運(yùn)行的程序,語(yǔ)法語(yǔ)句如下
也可以寫(xiě)成一行,用 ; 分隔
取值列表內(nèi)元素以空格隔開(kāi),如果元素帶有空格則用引號(hào)包裹起來(lái),例子如下
輸出如下,可見(jiàn)循環(huán)到最后退出循環(huán),引用變量依舊是最后一個(gè)取值列表元素
一行的寫(xiě)法
Shell的for循環(huán)也可以采用C語(yǔ)言的寫(xiě)法,注意是 雙括號(hào) ,用 分號(hào); 間隔
一個(gè)簡(jiǎn)單例子
while循環(huán)語(yǔ)句結(jié)合條件測(cè)試使用,語(yǔ)法如下
舉一個(gè)例子
在循環(huán)中使用條件測(cè)試實(shí)現(xiàn)復(fù)雜的邏輯,例如
也可以使用,||一行完成,省去if,fi
Shell的continue,break語(yǔ)句和Python一樣,例子如下
break語(yǔ)句下輸出4
continue語(yǔ)句下輸出4 6 7 8 9 10
常見(jiàn)結(jié)合使用的循環(huán)體有 序列 , 數(shù)組 , 命令行傳參 , 文件目錄和文件
序列通過(guò) seq 命令或者 {begin..end..step} 符號(hào)進(jìn)行定義:
結(jié)合for循環(huán)使用案例
在Shell中使用小括號(hào) () 定義數(shù)組,數(shù)組遍歷使用 [@] 符號(hào),防止元素有空格用雙引號(hào)包起來(lái),,例子如下
命令行傳參遍歷使用固定符號(hào) $@ ,如果參數(shù)中有空格,用雙引號(hào)括起來(lái),例子如下
文件遍歷使用 ls 命令,可以指定目錄,以及通配符匹配
一個(gè)雙重循環(huán)實(shí)現(xiàn),注意 expr表達(dá)式中乘號(hào)要加轉(zhuǎn)移符
(2)將某目錄下大小大于閾值的文件移動(dòng)到另一個(gè)文件
遍歷循環(huán)一個(gè)目錄,使用awk語(yǔ)法獲得文件大小,將100m以上的文件移動(dòng)到另一個(gè)文件夾
(2)指定開(kāi)始日期和結(jié)束日期完成一個(gè)跑批任務(wù)
指定一個(gè)開(kāi)始時(shí)間和結(jié)束時(shí)間,while從開(kāi)始日期一直自增到結(jié)束日期循環(huán)結(jié)束,通過(guò) date -d '2021-01-01 1day' +%Y-%m-%d 自增一天
先設(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)測(cè)試環(huán)境:
$
ls
-lr
d1
total
-rw-r--r--
1
wenlee
comm
dec
22
10:35
1.txt
-rw-r--r--
1
wenlee
comm
dec
22
10:35
2.txt
-rw-r--r--
1
wenlee
comm
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/
#
利用下列腳本來(lái)實(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
dec
22
10:35
d1/1.txt
-rw-r--r--
1
wenlee
comm
dec
22
10:35
d2/1.txt
-rw-r--r--
1
wenlee
comm
dec
22
10:35
d3/1.txt
-rw-r--r--
1
wenlee
comm
dec
22
10:35
d4/1.txt
-rw-r--r--
1
wenlee
comm
dec
22
10:35
d5/1.txt
ok?
thanks!
網(wǎng)頁(yè)題目:linux遍歷目錄命令 linux shell遍歷目錄
標(biāo)題URL:http://m.rwnh.cn/article4/hhgpoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)