2011-03-23 70 views
1

我必须编写一个shell脚本来获取目录名称作为参数,然后将目录中文件的名称和大小列出到文本文件中。我对Linux有一点了解,所以你能帮我吗?Linux Shell脚本:将目录的内容列入文件

所有我设法写的是这样的:

for entry in "$search_dir"/* 
do 
    if [ -f "$entry" ];then 
    echo "$entry" 
    fi 
done 

输出文件应该是这样的:

filename1 filesize1 
filename2 filesize2 

我对取得的目录名作为参数问题

回答

1

像这个:

#! /bin/bash 
if [ $# -gt 0 ] ; then 
    ls $1 > textfile.txt 
else 
    echo "Please provide Foldername"; 
fi 

此外,您可以检查是否$ 1文件夹,但这应该足以

+0

感谢sharpner,就像一个魅力。怎么打印文件大小? – Jim 2011-03-23 16:37:52

+0

ls -la或-ls -lach不管你看起来不错 – sharpner 2011-03-23 16:38:42

+0

对不起,但我不明白。如果[$#-gt 0];然后 ls $ 1> textfile.txt ls -la不能按我想要的方式工作。我想有filename1 size1(在第一行)filename2 size2(在第二行)等...对不起,所有的麻烦 – Jim 2011-03-23 16:44:51

2

你可以很容易地把一个脚本的输出到使用文件>

例如

ls /tmp > ./contentsOfDir.txt 

将倾将ls命令放入当前目录中的contentsOfDir.txt中。

该脚本可能看起来像这样的是bash shell:

#!/bin/bash 
ls -l $1 > contentsOfDir.txt 

,被称为

./myScript dirNameToBeDumpedInFile 

看一看this bash scripting tutorial,它涵盖了基础知识。

0
#!/bin/sh 

if [ ! -d "$1" ]; then 
    echo "usage: $0 <directory>"; 
    exit 1; 
fi 

cd $1; 
find -maxdepth 1 -type f -print0 | xargs -0 -n1 du -h; 
cd -; 

这将输出类似:

4.0K ./bundle.h 
24K ./walker.o 
4.4M ./git-show 
4.0K ./sha1-lookup.h 
100K ./refs.o 
2

如果你要打印的文件夹内容的一个漂亮的树和它的子文件夹,您可以使用“树”。

如果这不是你的系统上安装,你必须这样做第一:

sudo apt-get install tree 

那么语法是非常简单的。如果你想输出保存到一个文件:

tree -h -A path/to/dir > output.txt 
  • -A用于确保输出使用ASCII字符。
  • -h将以人们可读的格式打印每个文件大小。

您有更多的选择来限制输出,您可以通过使用“--help”选项得到:

> tree --help 
    -a   All files are listed. 
    -d   List directories only. 
    -l   Follow symbolic links like directories. 
    -f   Print the full path prefix for each file. 
    -L level  Descend only level directories deep. 
    -o filename Output to file instead of stdout. 
    -s   Print the size in bytes of each file. 
    -h   Print the size in a more human readable way. 
    --dirsfirst List directories before files (-U disables). 
相关问题