iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何使用Bash脚本列出文件、目录、可执行文件和链接
  • 808
分享到

如何使用Bash脚本列出文件、目录、可执行文件和链接

2023-06-16 03:06:56 808人浏览 安东尼
摘要

这篇文章主要为大家展示了“如何使用Bash脚本列出文件、目录、可执行文件和链接”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Bash脚本列出文件、目录、可执行文件和链接”这篇文章吧。一个

这篇文章主要为大家展示了“如何使用Bash脚本列出文件、目录、可执行文件和链接”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Bash脚本列出文件、目录、可执行文件和链接”这篇文章吧。

一个可以列出文件、目录、可执行文件和链接的简单脚本。

你是否曾经想列出目录中的所有文件,但仅列出文件,而不列出其它的。仅列出目录呢?如果有这种需求的话,那么下面的脚本可能正是你一直在寻找的,它在 GPLv3 下开源

当然,你可以使用 find 命令:

find . -maxdepth 1 -type f -print

但这键入起来很麻烦,输出也不友好,并且缺少 ls 命令拥有的一些改进。你还可以结合使用 lsgrep 来达到相同的结果:

ls -F . | grep -v /

但是,这又有点笨拙。下面这个脚本提供了一种简单的替代方法。

用法

该脚本提供了四个主要功能,具体取决于你调用它的名称:lsf 列出文件,lsd 列出目录,lsx 列出可执行文件以及 lsl 列出链接。

通过符号链接无需安装该脚本的多个副本。这样可以节省空间并使脚本更新更容易。

该脚本通过使用 find 命令进行搜索,然后在找到的每个项目上运行 ls。这样做的好处是,任何给脚本的参数都将传递给 ls 命令。因此,例如,这可以列出所有文件,甚至包括以点开头的文件:

lsf -a

要以长格式列出目录,请使用 lsd 命令:

lsd -l

你可以提供多个参数,以及文件和目录路径。

下面提供了当前目录的父目录和 /usr/bin 目录中所有文件的长分类列表:

lsf -F -l .. /usr/bin

目前该脚本不处理递归,仅列出当前目录中的文件。

lsf -R

该脚本不会深入子目录,这个不足有一天可能会进行修复。

内部

该脚本采用自上而下的方式编写,其初始化功能位于脚本的开头,而工作主体则接近结尾。脚本中只有两个真正重要的功能。函数 parse_args() 会仔细分析命令行,将选项与路径名分开,并处理脚本中的 ls 命令行选项中的特定选项。

list_things_in_dir() 函数以目录名作为参数并在其上运行 find 命令。找到的每个项目都传递给 ls 命令进行显示。

总结

这是一个可以完成简单功能的简单脚本。它节省了时间,并且在使用大型文件系统时可能会非常有用。

脚本

#!/bin/bash # Script to list:#      directories (if called "lsd")#      files       (if called "lsf")#      links       (if called "lsl")#  or  executables (if called "lsx")# but not any other type of filesystem object.# FIXME: add lsp   (list pipes)## Usage:#   <command_name> [switches valid for ls command] [dirname...]## Works with names that includes spaces and that start with a hyphen.## Created by Nick Clifton.# Version 1.4# Copyright (c) 2006, 2007 Red Hat.## This is free software; you can redistribute it and/or modify it# under the terms of the GNU General Public License as published# by the Free Software Foundation; either version 3, or (at your# option) any later version. # It is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details. # ToDo:#  Handle recursion, eg:  lsl -R#  Handle switches that take arguments, eg --block-size#  Handle --almost-all, --ignore-backups, --fORMat and --ignore main (){  init   parse_args ${1+"$@"}   list_objects   exit 0} report (){  echo $prog": " ${1+"$@"}} fail (){  report " Internal error: " ${1+"$@"}  exit 1} # Initialise global variables.init (){  # Default to listing things in the current directory.  dirs[0]=".";   # num_dirs is the number of directories to be listed minus one.  # This is because we are indexing the dirs[] array from zero.  num_dirs=0;   # Default to ignoring things that start with a period.  no_dots=1   # Note - the global variables 'type' and 'opts' are initialised in  # parse_args function.} # Parse our command lineparse_args (){  local no_more_args   no_more_args=0 ;   prog=`basename $0` ;   # Decide if we are listing files or directories.  case $prog in    lsf | lsf.sh)      type=f      opts="";      ;;    lsd | lsd.sh)      type=d      # The -d switch to "ls" is presumed when listing directories.      opts="-d";      ;;    lsl | lsl.sh)      type=l      # Use -d to prevent the listed links from being followed.      opts="-d";      ;;    lsx | lsx.sh)      type=f      find_extras="-perm /111"      ;;        *)      fail "Unrecognised program name: '$prog', expected either 'lsd', 'lsf', 'lsl' or 'lsx'"      ;;  esac   # Locate any additional command line switches for ls and accumulate them.  # Likewise accumulate non-switches to the directories list.  while [ $# -gt 0 ]  do    case "$1" in      # FIXME: Handle switches that take arguments, eg --block-size      # FIXME: Properly handle --almost-all, --ignore-backups, --format      # FIXME:   and --ignore      # FIXME: Properly handle --recursive      -a | -A | --all | --almost-all)        no_dots=0;        ;;      --version)        report "version 1.2"        exit 0        ;;      --help)        case $type in          d) report "a version of 'ls' that lists only directories" ;;          l) report "a version of 'ls' that lists only links" ;;          f) if [ "x$find_extras" = "x" ] ; then               report "a version of 'ls' that lists only files" ;             else              report "a version of 'ls' that lists only executables";             fi ;;        esac        exit 0        ;;      --)        # A switch to say that all further items on the command line are        # arguments and not switches.        no_more_args=1 ;        ;;      -*)        if [ "x$no_more_args" = "x1" ] ;        then          dirs[$num_dirs]="$1";          let "num_dirs++"        else          # Check for a switch that just uses a single dash, not a double          # dash.  This could actually be multiple switches combined into          # one Word, eg "lsd -alF".  In this case, scan for the -a switch.          # XXX: FIXME: The use of =~ requires bash v3.0+.          if [[ "x${1:1:1}" != "x-" && "x$1" =~ "x-.*a.*" ]] ;          then            no_dots=0;          fi          opts="$opts $1";        fi        ;;      *)        dirs[$num_dirs]="$1";        let "num_dirs++"        ;;    esac    shift  done   # Remember that we are counting from zero not one.  if [ $num_dirs -gt 0 ] ;  then    let "num_dirs--"  fi} list_things_in_dir (){  local dir   # Paranoia checks - the user should never encounter these.  if test "x$1" = "x" ;  then    fail "list_things_in_dir called without an argument"  fi   if test "x$2" != "x" ;  then    fail "list_things_in_dir called with too many arguments"  fi   # Use quotes when accessing $dir in order to preserve  # any spaces that might be in the directory name.  dir="${dirs[$1]}";   # Catch directory names that start with a dash - they  # confuse pushd.  if test "x${dir:0:1}" = "x-" ;  then    dir="./$dir"  fi   if [ -d "$dir" ]  then    if [ $num_dirs -gt 0 ]    then      echo "  $dir:"    fi     # Use pushd rather passing the directory name to find so that the    # names that find passes on to xargs do not have any paths prepended.    pushd "$dir" > /dev/null    if [ $no_dots -ne 0 ] ; then      find . -maxdepth 1 -type $type $find_extras -not -name ".*" -printf "%f\000" \        | xargs --null --no-run-if-empty ls $opts -- ;    else      find . -maxdepth 1 -type $type $find_extras -printf "%f\000" \        | xargs --null --no-run-if-empty ls $opts -- ;    fi    popd > /dev/null  else    report "directory '$dir' could not be found"  fi} list_objects (){  local i   i=0;  while [ $i -le $num_dirs ]  do    list_things_in_dir i    let "i++"  done} # Invoke mainmain ${1+"$@"}

以上是“如何使用Bash脚本列出文件、目录、可执行文件和链接”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何使用Bash脚本列出文件、目录、可执行文件和链接

本文链接: https://www.lsjlt.com/news/282147.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用Bash脚本列出文件、目录、可执行文件和链接
    这篇文章主要为大家展示了“如何使用Bash脚本列出文件、目录、可执行文件和链接”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Bash脚本列出文件、目录、可执行文件和链接”这篇文章吧。一个...
    99+
    2023-06-16
  • Bash脚本:如何优雅地处理文件和目录?
    Bash是Linux和Unix系统上最流行的命令行解释器之一。它是一种功能强大的脚本语言,可以用于处理文件和目录。在本文中,我们将讨论如何使用Bash脚本来优雅地处理文件和目录。 查找文件 Bash提供了一些强大的命令来查找文件。其中...
    99+
    2023-11-10
    对象 bash npm
  • PHP执行Shell脚本或Bash脚本文件并返回命令输出详情
    PHP执行shell脚本或者Bash脚本文件实例。 system和exec函数可能被配置文件禁用,可以通过修改php配置文件删除被禁用的函数。 1.通过system函数执行 使用实例: ...
    99+
    2023-08-31
    bash php 开发语言
  • shell脚本中如何执行sql文件
    在shell脚本中执行sql文件,可以使用以下命令: mysql -u 用户名 -p密码 数据库名 < 文件名.sql 其中...
    99+
    2024-04-09
    shell sql
  • 如何使用 BASH 脚本处理日志文件?
    BASH 脚本是一种强大的工具,可以帮助我们快速处理大量的日志文件。在本文中,我们将介绍如何使用 BASH 脚本处理日志文件,并演示一些常见的技巧和技术。 首先,我们需要了解一些基本的 BASH 脚本语法。在 BASH 脚本中,我们可以使用...
    99+
    2023-07-09
    自然语言处理 bash 日志
  • 如何列出目录的所有文件
    如何在Python中列出目录中所有文件并将其添加到list?   os.listdir()将为您提供目录中的所有内容 - 包含文件和目录。 如果您只想要文件,可以使用以下方法对其进行过滤os.path     from os ...
    99+
    2023-01-31
    文件 目录
  • 如何在mysql中执行sql脚本文件
    一、sql脚本文件 简介 xxxx.sql这种文件被称为sql脚本文件。sql脚本文件中编写了大量的sql语句。我们执行sql脚本文件的时候,该文件中所有的sql语句会全部执行!批量的执行SQL语句,可以使用sql脚本文件。 上面这个vi...
    99+
    2023-08-19
    sql mysql 数据库
  • 如何使用Bash Shell获取文件名和目录名
    这篇文章主要讲解了“如何使用Bash Shell获取文件名和目录名”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Bash Shell获取文件名和目录名”吧!前言还是今天再写一个自动化...
    99+
    2023-06-09
  • 如何用Shell脚本统计当前目录下目录和文件的数量
    这篇文章主要讲解了“如何用Shell脚本统计当前目录下目录和文件的数量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Shell脚本统计当前目录下目录和文件的数量”吧!下面用shell写...
    99+
    2023-06-09
  • 怎么在Linux中使用shell脚本自动执行脚本文件
    本篇文章为大家展示了怎么在Linux中使用shell脚本自动执行脚本文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、定时复制文件  a、在/usr/local/wfjb_web_back目录下...
    99+
    2023-06-09
  • 如何使用pkg将Node.js项目打包为可执行文件
    这篇“如何使用pkg将Node.js项目打包为可执行文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起...
    99+
    2024-04-02
  • 使用Java如何将SQL脚本文件执行到数据库中
    使用Java如何将SQL脚本文件执行到数据库中?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方式一:直接读取SQL脚本文件的内容,然后传递到SQL中。代码:RunSqlSe...
    99+
    2023-05-31
    java sql 数据库
  • 如何在 PHP 中列出目录中的文件
    在本文中,我们将讨论如何在 PHP 中获取目录中所有文件的列表。 在日常 PHP 开发中,您经常需要处理文件系统——例如,获取特定目录中的文件列表。PHP 提供了几种不同的方式来轻松读取目录的内容。今天,我们将通过所有这些方法以及示...
    99+
    2023-09-11
    php
  • 如何使用 delve 调试器单步执行可执行文件?
    学习Golang要努力,但是不要急!今天的这篇文章《如何使用 delve 调试器单步执行可执行文件?》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大...
    99+
    2024-04-05
  • Shell脚本如何监控目录内文件改动
    这篇文章将为大家详细讲解有关Shell脚本如何监控目录内文件改动,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体代码如下所示:#! /bin/bashwebroot="/home/w...
    99+
    2023-06-09
  • 如何将java项目导出为.exe执行文件
    小编给大家分享一下如何将java项目导出为.exe执行文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!将java项目导出为.exe执行文件需要借助于第三方软件,...
    99+
    2023-06-15
  • 在Linux中如何使用Bash脚本删除早于 “X” 天的文件/文件夹
    小编给大家分享一下在Linux中如何使用Bash脚本删除早于 “X” 天的文件/文件夹,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1)在 Linux 中删除早于...
    99+
    2023-06-16
  • 如何实现Linux给文件或目录创建软链接、硬链接
    这篇文章主要讲解了“如何实现Linux给文件或目录创建软链接、硬链接”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现Linux给文件或目录创建软链接、硬链接”吧!当我们需要在不同的目录...
    99+
    2023-06-13
  • linux如何列出你系统中的所有文件和目录
    这篇文章给大家分享的是有关linux如何列出你系统中的所有文件和目录的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。列出你系统中的所有文件和目录要看到你系统中的所有目录,运行:find / -t...
    99+
    2023-06-27
  • Bash 面试:如何处理文件和目录的操作?
    Bash 是一种广泛使用的 Unix shell,它提供了一种交互式的命令行界面,使得用户可以通过简单的命令来操作文件和目录。在这篇文章中,我们将讨论如何使用 Bash 处理文件和目录的操作。 创建目录 要创建一个新目录,可以使用 m...
    99+
    2023-07-02
    shell bash 面试
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作