A. 如何在linux中使用shell腳本遍歷指定目錄的文件,將創建時間大於指定時間的文件,復制到指定目錄下。
大於指定時間?最簡單的就是直接find裡面指定吧。例如,查找當前目錄及其子目錄所有mtime大於1天的文件:
find
/path
-type
f
-mtime
+1
即可,/path
可以換成其他路徑,-mtime
+1
表示時間大於1天。-1的話表示小於一天也就是1天之內的。
B. 編寫一個shell腳本,它把第二個位置參數及其以後的各個參數指定的文件復制到第一個位置參數指定的目錄中。
#!/bin/bash
dest_dir=$1
shift
cp $* $dest_dir/
C. shell腳本同時復制一個目錄下的多個文件到指定目錄
#!/bin/sh
dir=$1
time=$2
otdir=$3
tmp=`find
$1
-mtime
+$2
-print`
echo
$tmp
cp
$tmp
$otdir
執行時
要有3個參數指定文件的目錄
大於指定的時間
復制到的目錄
沒寫驗證部分
參數順序不要寫錯
D. shell腳本,若位置參數1指定的目錄存在,則跳到該目錄,並顯示位置參數2指定的文件的
#!/bin/shpicdir=/opt/wwwfind${picdir}-typef-iname"*[jpg|jpeg|png|gif|bmp]"|grep-v"_"|teepicfile.txt
E. 一.編寫一個Shell腳本,實現如下功能: 1、從腳本參數獲取到的目錄名列表;
3.# !/bin/bash
cd $1
ls –a|grep 『*.dat』
ls –a|grep 『*.log』
mkdir DONE/
for files in *.dat
do
mv $datfile ${datfile%.dat}._donedat
cp -r ${datfile%.dat}._donedat DONE/${datfile%.dat}._donedat
done
for logfile in *.log
do
mv $ logfile ${ logfile %.log}._donelog
cp –r ${ logfile %.log}._donelog DONE/${datfile%.dat}._donelog
done
F. 用shell寫一個腳本,根據參數搜索任意指定的目錄,將該目錄下的文件輸出到控制台。 輸出樣例如下:
if[$#-lt1];then
echo"USAGE:$0[path]"
exit
fi
foriin$*
do
if[!-d$i];then
echo"$inotexist"
continue
fi
cd$i
echo"filesin$i:"
ls-l|awk'{print$8}'
done
G. 1:編寫一個Shell腳本,他把第二個位置參數及其以後的各個參數指定的文件復制到第一個位置參數指定的目錄
第一個問題
#!/bin/bash
while [ "x$2" != "x" ]; do
cp $2 $1
shift
done
第二個問題
#!/bin/bash
date
$num=`w|grep "username"|grep -cv "grep"`
if [ $num -ne 0 ]; then
write username <<-EOF
you are online
EOF
fi
H. 編寫shell腳本找出參數指定路徑中的所有目錄文件
if [ $# = 0 ]
then
echo "usage:$0 <path>"
exit 1
fi
if [ ! -d $1 ]
then
echo "not a directory"
exit 1
fi
#只找目錄
ls -l $1|grep ^d|awk '{print $NF}'
#找目錄和文件
ls -l $1
#不知道你問的是目錄,還是目錄+文件,都寫上了
I. shell 腳本參數 路徑怎麼設置
linux系統除了提供位置參數還提供內置參數,內置參數如下:
$# ----傳遞給程序的總的參數數目
$? ----上一個代碼或者shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值。
$* ----傳遞給程序的所有參數組成的字元串。
$n ----表示第幾個參數,$1 表示第一個參數,$2 表示第二個參數 ... $0 ----當前程序的名稱
$@----以"參數1" "參數2" ... 形式保存所有參數
$$ ----本程序的(進程ID號)PID
$! ----上一個命令的PID
J. shell將一個目錄作為參數傳遞給腳本並完成如下功能
#!/bin/bash
dir=$1
if [ ! -d $dir ];then
echo $dir is not dir
fi
cd $dir
f=0
d=0
for i in `ls -R $dir`;do
if [ ! -d $i ];then
cat $i
let f++
else
echo $i is dir
let d++
fi
done
echo file num is $f
echo dir num is $d