移动文件,并显示目录内容

回复 收藏
编写一个shell脚本,利用for循环将当前目录下的.txt文件移动到指定的目录,并按文件大小显示出移动后指定的目录的内容。

{{{密码回复可见}}}

2016-02-20 12:19 举报
已邀请:
0

陈森林

赞同来自:

看看
0

hhx012

赞同来自:

{:4_95:}学习
0

ttly123

赞同来自:

看看
0

我是学渣

赞同来自:

{:4_99:}
0

snake

赞同来自:

看看
0

has

赞同来自:

好的我看
0

lin13750529011

赞同来自:

怎样的
0

Kmike

赞同来自:

看看
0

lin19890913

赞同来自:

#!/bin/bash
## 将当前目录下的.txt文件移动到/shelltest/b/,并按文件大小显示出移动后/shelltest/
b/下的内容
for i in `find *.txt`;do
  mv $i /shelltest/b/
done
echo `ls -S /shelltest/b/`

今天正式开始练习shell ,这个练习题一开始感觉很容易,后面又感觉有点难,那个按文件大小显示目录里的内容一开始想到用sort,后面查了下发现ls -S也有排序功能,用这个更好点,我在机子上试验成功了,应该是正确的
0

lin19890913

赞同来自:

lin19890913 发表于 2016-3-1 16:09
#!/bin/bash
## 将当前目录下的.txt文件移动到/shelltest/b/,并按文件大小显示出移动后/shelltest/
b/下 ...

我这样的写法貌似没错吧?题目中的要求都达到了,而且比楼主的更好懂些
0

蔡炳森

赞同来自:

#!/bin/bash
dir1=$1
dir2=$2
cd $dir1
find . -type f |grep ".*txt" |cut -d'/' -f2 > /tmp/1.txt
for m in `cat /tmp/1.txt`
do
   mv $m $dir2

done

cd $2
ls -l |grep ".*txt"|sort -t' ' -n -k5 |awk -F' ' '{print $9}' > /tmp/2.txt
for i in `cat /tmp/2.txt`
do
  echo $i
  cat $i
done
dir1 是源目录 dir2目标目录  
可以将源目录下的。txt结尾的文件移动到dir2并按照从小到大的排序输出文件内容。
0

蔡炳森

赞同来自:

哎。写的复杂了。
0

maria

赞同来自:

  1. #!/bin/bash
  2. # Author: Maria.
  3. # Date & Time: 2016-03-01 20:32:17
  4. # Description: Please Edit here.

  5. todir=$1;
  6. if [ -z $todir ]
  7. then
  8.     read -p "input the dir for move to:" todir
  9. fi

  10. if [ ! -d $todir ]
  11. then
  12.     mkdir -p $todir
  13. fi

  14. filelist=`find . -type f -name '*.txt'`

  15. for txtfile in $filelist
  16. do
  17.    mv $txtfile $todir
  18. done

  19. /bin/ls -Slr $todir
0

rolay8

赞同来自:


  1. for i in $(find . -type f -name "*.txt");do mv $i /data/dir;done && ls -S /data/dir
0

jinm

赞同来自:

学习一下
0

meiru

赞同来自:

看看,学习一下
0

小猫咪

赞同来自:

{:5_121:}
0

乐橙306

赞同来自:

1
0

TSpace

赞同来自:

试试看
0

Hyman1105

赞同来自:

学习
0

zyos

赞同来自:

a=`ls|grep .txt`
for i in $a
        do
mv $i /tmp/
        done
ls -Slh /tmp/
0

wsw13640218682

赞同来自:

  1. #!/bin/bash
  2. file=`find /root/test/ -name "*.txt"`
  3. for i in "$file"
  4. do
  5. mv $i /root && ls -lb
  6. done
0

malong

赞同来自:

看看
0

linuxjishuren

赞同来自:

find 搭配可以实现不
0

linux-小莫

赞同来自:

kanakn
0

vb3328998

赞同来自:

1
0

HMOM

赞同来自:

学习
0

licengceng

赞同来自:

学习
0

nihao426181

赞同来自:

……
0

elvis

赞同来自:

ddd
0

monga

赞同来自:

学习
0

zhangzihao

赞同来自:

kan kan
0

xzzlamp

赞同来自:

11
0

xebszw

赞同来自:

+1
0

Bullet_Point

赞同来自:

1
0

15812926028

赞同来自:

look
0

十月鱼

赞同来自:

xuexi
0

jia3700

赞同来自:

学习
0

dongteng

赞同来自:

学习
0

hhao

赞同来自:

1
0

kw是id

赞同来自:

#!/bin/bash
dir1=/usr/local/sbin
dir2=/tmp
cd $dir1
for i in `ls *.txt`
do
 mv $dir1/$i $dir2 
done
ls -l $dir2|sed -n '2,$'p |awk '{print $5,$9}'|sort -r|awk '{print $2}'

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: