Mar 12

原贴地址: http://www.linuxquestions.org/questions/programming-9/how-can-i-list-directories-only-in-linux-375219/

ls -p | grep "/"

-p 选项只会给目录后面加/

tree -d -L 1

-d 只显示目录 -L 1最大深度是1

find . -type d -exec ls -d {} \;

查找当前目录文件夹,并对每一个目录执行ls -d. 即递归列出所有目录。效果上等价于tree -d,不过输出结果是不同的。

ls -d */

I just found this out after nearly 3 years of using Linux.

不解释。。。

If you want to include the hidden directories, you may want to try one of these....

如果连隐藏目录也要一起,那么试下面之一吧。

find . -type d -exec ls -d {} \;
or
ls -d .*"/" *"/" 
or 
find . -type d

试试du看。当然,如果不喜欢左边的size,你可以du|awk '{print $2}'

呃。单行脚本都出来了。

for f in *;do if [[ -d $f  ]]; then echo $f;fi; done

当然,我认为最好还是ls -d */ 如果不要求显示隐藏目录

May 22

不断地思考,不断地想偷懒。

运行环境: cygwin

从目录4.25复制到目录e,如果文件存在/目录不存在,则不复制,并记录

 

.
|-- 4.25
| |-- 1
| | |-- 1.jpg
| | |-- 2.jpg
| | |-- 3.jpg
| | |-- 4.jpg
| | `-- 5.jpg
| |-- 2
| | |-- 1.jpg
| | |-- 2.jpg
| | |-- 3.jpg
| | |-- 4.jpg
| | `-- 5.jpg
| `-- 3
| |-- 1.jpg
| |-- 2.jpg
| |-- 3.jpg
| |-- 4.jpg
| `-- 5.jpg
`-- e
|-- 1
| |-- 1.jpg
| `-- 2.jpg
|-- 2
`-- 4

脚本运行结果(运行环境是cygwin)

  • 脚本输出方面
  • 文件、目录变化

=========脚本输出=========  

$ ./calc.sh 4.25;tree
当前目录 /home/pocoyo/4.25 正在处理

"/home/pocoyo/4.25/1/3.jpg" -> "/home/pocoyo/e/1/3.jpg"
"/home/pocoyo/4.25/1/4.jpg" -> "/home/pocoyo/e/1/4.jpg"
"/home/pocoyo/4.25/1/5.jpg" -> "/home/pocoyo/e/1/5.jpg"
"/home/pocoyo/4.25/2/1.jpg" -> "/home/pocoyo/e/2/1.jpg"
"/home/pocoyo/4.25/2/2.jpg" -> "/home/pocoyo/e/2/2.jpg"
"/home/pocoyo/4.25/2/3.jpg" -> "/home/pocoyo/e/2/3.jpg"
"/home/pocoyo/4.25/2/4.jpg" -> "/home/pocoyo/e/2/4.jpg"
"/home/pocoyo/4.25/2/5.jpg" -> "/home/pocoyo/e/2/5.jpg"

文件数统计
目录 文件数
1 5
2 5
3 5
总计: 3 15

未复制文件
目录 e:\3 不存在
文件 e:\1\1.jpg 已经存在
文件 e:\1\2.jpg 已经存在

===============以下是文件、目录变化===============

.
|-- 4.25
| |-- 1
| | |-- 1.jpg
| | |-- 2.jpg
| | |-- 3.jpg
| | |-- 4.jpg
| | `-- 5.jpg
| |-- 2
| | |-- 1.jpg
| | |-- 2.jpg
| | |-- 3.jpg
| | |-- 4.jpg
| | `-- 5.jpg
| |-- 3
| | |-- 1.jpg
| | |-- 2.jpg
| | |-- 3.jpg
| | |-- 4.jpg
| | `-- 5.jpg
| |-- conflicts.txt
| `-- total.txt
|-- calc.sh
|-- e
| |-- 1
| | |-- 1.jpg
| | |-- 2.jpg
| | |-- 3.jpg
| | |-- 4.jpg
| | `-- 5.jpg
| |-- 2
| | |-- 1.jpg
| | |-- 2.jpg
| | |-- 3.jpg
| | |-- 4.jpg
| | `-- 5.jpg
| `-- 4
|-- freeime6.5.exe
|-- rename.sh
|-- rename_new.sh
`-- scan_record.txt
#!/bin/bash
# by Daniel Chow @speedup2010
# v1 2012年05月21日 星期一 22:58:31
#_source=/cygdrive/d/$1
#_des=/cygdrive/e/
_source=~/$1/
_des=~/e/
_log=$_source
if [ $# -eq 1 -a -d $_source ];then {
        cd $_source
        echo -e "当前目录 $PWD  正在处理\n"
        for files in */*;do
                _dir=${files%%/*}
                if [ -f $_des$files ];then
                        echo "文件 $_des$files 已经存在">>$_log/conflicts.txt
                elif [ ! -d $_des$_dir ];then
                        echo -e "目录 $_des$_dir 不存在" >>$_log/conflicts.txt
                elif [  -d $_des$_dir ];then
                        cp $_source$files  $_des$_dir -iv
                fi

                echo -en "\t$_dir \t`ls -l $_dir | grep "^-" | wc -l`\n" >>$_log/total.txt;
        done
        sum_dir=$(sort $_log/total.txt | uniq | wc -l)
        echo  -e "\t目录\t文件数">$_log/tmp.txt
        sort $_log/total.txt | uniq >>$_log/tmp.txt
        mv $_log/{tmp,total}.txt
        echo -e "总计:\t$sum_dir\t$(awk '{sum_files+=$2};END{print sum_files}' $_log/total.txt)">>$_log/total.txt
        echo -e "\n\t文件数统计\t\t \n`cat $_log/total.txt`\n"
        sort $_log/conflicts.txt | uniq >>$_log/tmp.txt
        mv $_log/{tmp,conflicts}.txt
        sed "s|$HOME/||g" -i conflicts.txt
        sed 's/\//:\\/;s/\//\\/' -i conflicts.txt
        echo -e "\t未复制文件\t\t \n`cat $_log/conflicts.txt`\n"

}
else
        echo -e "用法: $0 待复制目录\n"
fi

写了个新版,不过有些东西还是重复了,要重新调整一下。

 

Jan 4

英文原文:http://wiki.linuxquestions.org/wiki/dd

中文翻译:I

dd是一个通过读取硬盘(比如你的硬盘)的全部块实现磁盘转储的工具. However,its architecture is laid out so it can do much more than creating a dump. 看下面表格的内容.

内容
1. 磁盘备份
    1.1 创建备份
    1.2 还原备份
    1.3 克隆一个硬盘
    1.4 传输磁盘镜像
2. 创建CD光盘iso镜像
3. 急救一个包含有坏块的文件
4. 分析你的磁盘
5. 创建你自己的引导器
6. 测试你的磁盘表现
7. Windows pendant
8. 请参阅

磁盘备份


创建一个备份