LinuxShell脚本:将目录的内容列表到文件中

LinuxShell脚本:将目录的内容列表到文件中,linux,Linux,我必须编写一个shell脚本,获取一个目录名作为参数,然后将目录中文件的名称和大小列出到一个文本文件中。我对linux知之甚少,你能帮我一下吗 我所能写的就是: for entry in "$search_dir"/* do if [ -f "$entry" ];then echo "$entry" fi done 输出文件应如下所示: filename1 filesize1 filename2 filesize2 我在获取目录名作为参数时遇到问题,如下所示: #! /bi

我必须编写一个shell脚本,获取一个目录名作为参数,然后将目录中文件的名称和大小列出到一个文本文件中。我对linux知之甚少,你能帮我一下吗

我所能写的就是:

for entry in "$search_dir"/* 
do
  if [ -f "$entry" ];then
    echo "$entry"
  fi
done
输出文件应如下所示:

filename1 filesize1
filename2 filesize2
我在获取目录名作为参数时遇到问题,如下所示:

#! /bin/bash
if [ $# -gt 0 ] ; then
   ls $1 > textfile.txt
else
    echo "Please provide Foldername";
fi
此外,您可以检查$1是否是文件夹,但这样就足够了:

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

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

您可以使用

比如说

ls /tmp > ./contentsOfDir.txt
将ls命令转储到当前目录的contentsOfDir.txt中

对于bash shell,脚本可能如下所示:

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

./myScript dirNameToBeDumpedInFile

看一看,它涵盖了基本知识。

您可以使用

#!/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 -;
比如说

ls /tmp > ./contentsOfDir.txt
将ls命令转储到当前目录的contentsOfDir.txt中

对于bash shell,脚本可能如下所示:

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

./myScript dirNameToBeDumpedInFile

看看,它涵盖了基本知识。

如果您想打印文件夹内容及其子文件夹的漂亮树,可以使用“树”

#!/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 -;
如果未在您的系统上安装,您需要首先执行以下操作:

sudo apt-get install tree
那么语法就相当简单了。如果要将输出保存到文件:

tree -h -A path/to/dir > output.txt
  • -使用
    确保输出使用ASCII字符
  • -h
    将以可读格式打印每个文件大小
通过使用“-help”选项,您有更多选项来限制可以获得的输出:


若要打印文件夹内容及其子文件夹的漂亮树,可以使用“树”

如果未在您的系统上安装,您需要首先执行以下操作:

sudo apt-get install tree
那么语法就相当简单了。如果要将输出保存到文件:

tree -h -A path/to/dir > output.txt
  • -使用
    确保输出使用ASCII字符
  • -h
    将以可读格式打印每个文件大小
通过使用“-help”选项,您有更多选项来限制可以获得的输出:


谢谢sharpner,它很有魅力。打印文件大小怎么样?ls-la或-ls-lach任何对你来说合适的东西对不起,我不明白。如果[$#-gt 0];那么ls$1>textfile.txt ls-la就不能按我想要的方式工作了。我想要文件名1大小1(在第一行)文件名2大小2(在第二行)等等。。。很抱歉给您带来这么多麻烦。这也将打印Directories Hanks sharpner,效果非常好。打印文件大小怎么样?ls-la或-ls-lach任何对你来说合适的东西对不起,我不明白。如果[$#-gt 0];那么ls$1>textfile.txt ls-la就不能按我想要的方式工作了。我想要文件名1大小1(在第一行)文件名2大小2(在第二行)等等。。。很抱歉,这也会打印目录