使用 bash 迭代文件(和目录)名称

2023-12-15

我试图编写一个 bash 脚本来计算本地目录的文件数和目录数。这是我的第一次尝试:

#!/bin/bash
files=0
dir=0
for file in `ls`
do
    if [ -d $file ]
    then
        dir=$(($dir+1))
    else
        files=$(($files+1))
    fi
done 
echo "files=$files, direcotries=$dir"

但是,那for命令没有像我预期的那样迭代文件和目录的名称。如果文件或目录的名称有空格,则效果不佳。当名称中存在空格时,变量“file”采用文件(或目录)名称中每个单词的值。

有什么办法可以做到这一点吗?


使用通配符:for file in *; do …; done。这样可以保持名称中的空格正确。考虑shopt -s nullglob也。您的代码和我的建议都没有列出以点开头的名称..

另外,使用if [ -d "$file" ]用双引号将变量值引起来避免空格问题。

Hence:

#!/bin/bash

shopt -s nullglob
files=0
dir=0
for file in *
do
    if [ -d "$file" ]
    then
        dir=$(($dir+1))
    else
        files=$(($files+1))
    fi
done 
echo "files=$files, directories=$dir"

在 Bash 中,还有其他编写算术的方法,例如((files++)).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 bash 迭代文件(和目录)名称 的相关文章

  • OS X bash:目录名

    我想创建一个简单的 bash 脚本来在 OS X 上启动 Java 程序 文件名 文件路径和直接工作文件夹都包含空格 当我这样做时 bin sh cd dirname 0 I get usage dirname path 我也尝试过在各种不
  • 如何使用c在Linux中获取当前时间戳(以纳秒为单位)

    我知道我们可以使用clock gettime CLOCK MONOTONIC 我尝试问的问题是 如果我需要以纳秒为单位的时间 从时代来看 这将是一个巨大的数字 例如 自纪元以来的秒数是13438461673 so 13438461673 1
  • 如何从 tcl 脚本调用 bash 命令?

    Bash 命令可从交互式 tclsh 会话中获得 例如 在 tclsh 会话中 您可以 ls 代替 exec ls 但是 您不能有一个直接调用 bash 命令的 tcl 脚本 或者没有exec 如何使 tclsh 在解释 tcl 脚本文件时
  • 在詹金斯管道作业中将变量传递给bash脚本

    我有一个 Jenkins 管道作业 其中我使用名为 setup sh 的 bash 脚本配置我的环境 如下所示 bin bash export ARCH 1 echo architecture ARCH 在 Jenkins 管道脚本中 我使
  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • python中的多服务器监控/自动重启

    我有 2 个服务器程序 必须使用 GNU Screen 启动 我想使用基于 Python 的程序来强化这些服务器 防止崩溃 该程序启动每个屏幕会话 然后监视服务器进程 如果服务器进程崩溃 我需要 python 代码来终止无关的屏幕会话并再次
  • 如何在 Linux 上正确地将网络接口置于混杂模式

    那么如何正确地做到这一点呢 我知道如何通过创建套接字 然后使用 ioctl 设置 IFF PROMISC 标志来做到这一点 如 如何在C中检查网络设备状态 https stackoverflow com questions 3055622
  • Python select() 行为很奇怪

    我在理解 select select 的行为时遇到一些困难 请考虑以下 Python 程序 def str to hex s def dig n if n gt 9 return chr 65 10 n else return chr 48
  • c - 后台运行的程序的退出状态

    我有一个任务 其中我必须创建一个迷你 shell 它能够执行很多操作 包括作业控制 我设法使用 fork 和 execvp 创建新的工作 但我还想获取 execvp 运行的程序的退出代码 根据我从其他帖子中查找到的内容 我可以使用以下方法来
  • 使用vim,如何快速刷新正在处理的网页?

    我已经使用 VIM 几个星期了 同时处理各种网络语言 我真的很喜欢它 我发现必须点击或单击浏览器并刷新页面才能看到代码更改的效果 这很麻烦 更烦人的是 因为我使用的是 Virtual Box 而且我倾向于在主机系统上处理 PDF 文件 因此
  • 强制 shell 在 SunGrid 引擎中使用 conda 变量中的 python [重复]

    这个问题在这里已经有答案了 我正在尝试在 SunGrid 引擎中执行 python 文件 并且从 anaconda3 环境变量中执行它 我的代码很简单 from future import print function import url
  • 如何在 shell 中解码 URL 编码的字符串?

    我有一个文件 其中包含已编码的用户代理列表 例如 Mozilla 2F5 0 20 28Macintosh 3B 20U 3B 20Intel 20Mac 20OS 20X 2010 6 3B 20en 我想要一个 shell 脚本 它可以
  • bash - 从文本文件中删除多行不同的文本

    我正在处理大量日志文件 并且大多数日志文件都有大量被记录多次的重复字符串 为了使与此类事情没有太多关系的其他人 也为我自己 轻松查看日志 我想制作一个脚本来删除一些可能对其他人造成 误报 的文本行 嘿管理员 我多次出现这些错误 gt 叹息
  • Bash IF:多个条件

    我已经尝试让这件事工作几个小时 但我无法让它工作 if P SFTP a PORT 22 P FTPS PORT 990 a PORT 21 then 有人能帮我吗 我知道多个条件可以这样写 if P SFTP PORT 22 then 但
  • Shell脚本通过curl调用API并处理响应

    我需要创建一个通过curl 调用我的登录API 的shell 脚本 该脚本应该能够存储和处理来自curl api 调用的响应 myscript sh bin bash echo Extract bearer token from curl
  • 如何安装 Node 和 NPM 以便不必使用 sudo?

    我正在尝试在 Ubuntu 14 04 计算机上设置 Node js 和 NPM 但遇到了一些问题 在我的第一次尝试中 我不断得到EACCES尝试安装软件包时出错 有时甚至使用sudo 所以我彻底卸载了node和npm 现在我正在尝试找出如
  • 使用sed插入文件内容

    我试图在给定模式之前插入文件内容 这是我的代码 sed i pattern i r scriptPath adapters default permissions xml manifestFile 它添加路径而不是文件的内容 有任何想法吗
  • 如何在不需要设置 LD_LIBRARY_PATH shell 变量的情况下输入“cargo run”?

    我构建了一个 Rust 程序 通过 C 接口调用 C 函数 为了执行该程序 我必须运行 export LD LIBRARY PATH
  • Linux 堆栈大小

    我正在寻找 Linux 内核中堆栈的良好描述 但我发现找到任何有用的东西出奇地困难 我知道大多数系统的堆栈限制为 4k 而其他系统则限制为 8k 我假设每个内核线程 下半部分都有自己的堆栈 我还听说 如果中断发生 它会使用当前线程的堆栈 但
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的

随机推荐

  • C++ 中新内存的范围

    当我尝试执行以下操作时 出现错误 提示我正在尝试读取或写入受保护的内存 void func1 int ptr int ptr b new int 5 ptr ptr b void main int ptr a func1 ptr a del
  • NoClassDefFoundError Android 与 ActionBarActivity

    我目前有一个ActionBarActivity它总是返回一个NoClassDefFoundError 我读到这可能是 ADT 的问题 但我不能确定 因此我提出了问题 我已经从 Android 示例中导入了 ActionBar 示例 andr
  • C++ 从向量中删除对象[重复]

    这个问题在这里已经有答案了 我想从向量中删除一个元素 例如 object that is in the vector MyClass obj vector looks as so vector
  • R:2个不同包中的2个同名函数

    我需要加载到 R 包 tseries 和 chron 两者都有一个名为 is weekend 的函数 我的环境中始终具有我加载的第二个包中的函数 我如何才能始终访问 chron 的功能 您可能已经注意到加载包的顺序会有所不同 即最后加载的包
  • 线程池程序在速度更快的服务器上运行速度要慢得多

    upd我现在认为我的问题的根源不是 线程 因为我观察到程序的任何一点都变慢了 我认为当使用 2 个处理器时 我的程序执行速度会变慢 可能是因为两个处理器需要彼此 通信 我需要做一些测试 我将尝试禁用其中一个处理器 看看会发生什么 我不确定这
  • 使用 C++11 的 CUDA 6.0 的 CMake 脚本

    我正在为我的 CUDA 6 0 Boost 1 55 0 OpenCV 2 4 9 项目开发 64 位 Mac OSX 10 9 使用 makefile 进行编译 但由于我最终将在 64 位 Windows 8 1 上测试它 我想我 熟悉
  • Delphi中使用SetupDiGetClassDevs进行串口枚举

    我正在尝试枚举 COM 端口的 友好名称 当 USB 串行设备在运行时连接和断开时 端口可能会动态变化 基于中描述的可能方法这个问题 我正在尝试使用 SetupDiGetClassDevs 方法 I found 这个示例代码 但它是为旧版本
  • X.509 安全 Web 服务的 Java 客户端

    我有使用 X 509 证书保护的远程 Web 服务 我生成了 Web 服务客户端内容 使用 jax ws 但需要配置 if 以用于证书的使用 我应该如何进行 我想我应该在本地受信任的密钥库中注册证书 他们设置如下 System setPro
  • 利用浏览器缓存第 3 方 JS

    我已经在我的 httpd conf 上设置了 Expiry ExpiresActive On ExpiresDefault access plus 1 month ExpiresByType image gif access plus 1
  • 使用WITH时语法中出现SQL错误[重复]

    这个问题在这里已经有答案了 我想使用带有WITH 子句的SQL 查询 但出现语法错误 我正在使用 MySQL 版本 5 6 28 这是一个简单的代码示例 WITH alias test AS SELECT id title FROM tip
  • 自定义字体显示在 iOS 模拟器上,但不显示在 Storyboard 上

    我的自定义字体在模拟器上运行时工作正常 但是有什么方法可以在我工作时在故事板本身中查看自定义字体吗 我的文本与默认字体的大小不匹配 所以我有继续编译和运行代码 并通过一遍又一遍的尝试和错误来确定正确的大小 我看到了一些关于此的问题 但它只是
  • 如何读取webhooks发送的数据?

    我有最新的 woocommerce 插件 并且必须为我的 URL 之一设置一个 webhook 但我无法在 REQUEST 中读取它 也无法在 input file get contents php input webhookContent
  • 如何获取当前光标作为Texture2D Unity C#

    我有一个问题 我想获取当前光标 并将其作为Unity中的texture2D获取 当我说当前光标时 我的意思是用户当前拥有的光标 例如 如果用户将光标更改为猫 我希望在 Unity 中拥有相同的猫光标 这就是为什么我不只是在线搜索默认光标的原
  • java.lang.ClassCastException:com.sun.xml.bind.v2.runtime.JAXBContextImpl 无法转换为 com.sun.xml.bind.api.JAXBRIContext

    我创建了一个 jaxws Web 服务 我完全遵循了url 服务非常完美 没有任何错误 但是当请求命中时服务器出现错误 SEVERE caught throwable java lang ClassCastException com sun
  • 如何让子进程在父进程退出后终止?

    假设我有一个进程恰好生成一个子进程 现在 当父进程由于某种原因退出时 正常或异常 通过kill C 断言失败或其他任何原因 我希望子进程终止 如何正确地做到这一点 stackoverflow 上的一些类似问题 之前问过 当父进程退出时 如何
  • 进行文件上传并转到另一个PHP页面

    所以我有 4 页 它们很简单 index php 有效
  • 如何在android 2.1中比较系统日期和mydate?

    在我的 Android 应用程序中 我从数据库中获取日期和时间 但我无法将 日期 格式的日期从数据库获取到我的应用程序中 日期为字符串格式 因此我无法将系统日期与数据库日期进行比较 如果我将系统日期转换为字符串 那么我无法在重复的情况下将日
  • 平滑凹凸不平的圆

    我正在检测圆形物体的边缘并获得 凹凸不平 的不规则边缘 是否可以平滑边缘以使形状更均匀 例如 在下面的代码中 我生成了一个 凹凸不平 的圆圈 左 是否有一种平滑或移动平均函数可以用来获得或近似 平滑 圆 右 最好使用某种参数 我可以控制 因
  • 如何扫描 LAN 网络中的设备

    我想在 LAN 网络中进行扫描以查找链接的设备 我正在 IOS 中为 IPAD 开发一个应用程序 我该怎么做 因为这些是移动设备 所以我假设您想要在无线网络上查找设备 理论上 由于 wifi 使用共享介质进行通信 因此您可以被动侦听流经网络
  • 使用 bash 迭代文件(和目录)名称

    我试图编写一个 bash 脚本来计算本地目录的文件数和目录数 这是我的第一次尝试 bin bash files 0 dir 0 for file in ls do if d file then dir dir 1 else files fi