通过 bash 脚本与多个目录中的文件交互

2023-12-14

我生成了一个迭代多个 .csv 文件的脚本,将相关文件转换为 UTF-8:

#!/bin/bash

cd /home/user/prod/
charset="text/plain; charset=iso-8859-1"

for file in *.csv; do
    if [[ $(file -i "$file") == "$file: $charset" ]]; then
        iconv -f ISO-8859-1 -t UTF-8 "$file" > "$file.new";
        mv -f "$file.new" "$file";
fi
done

这可行,但我真正想要的是迭代驻留在不同路径中的文件。我尝试从设置一个路径(而不是定义当前目录)开始,但我无法让它工作:

#!/bin/bash

path="/home/user/prod"
charset="text/plain; charset=iso-8859-1"

for file in "$path/*.csv"; do
    if [[ $(file -i "$file") == "$file: $charset" ]]; then
        iconv -f ISO-8859-1 -t UTF-8 "$file" > "$file.new";
        mv -f "$file.new" "$file";
fi
done

通过设置路径来做到这一点的最佳方法是什么?如何处理驻留在不同路径中的文件(相同扩展名)?


您已经接受了@Charles Duffy 的答案,但是(如果我理解得很好)您的问题是关于将文件放在不同的目录因此,如果您需要处理多个目录中的多个 csv 文件,您可以使用以下代码片段:

# array containing the different directories to work with
pathDir=("/foo/bar/dir1" "/buzz/fizz/dir2")

for dir in "${pathDir[@]}" # For each directory
do
    for file in "$dir/"*.csv; do # For each csv file of the directory

        if [[ $(file -i "$file") == "$file: $charset" ]]; then
            iconv -f ISO-8859-1 -t UTF-8 "$file" > "$file.new";
            mv -f "$file.new" "$file";
        fi

    done
done

The pathDir变量是一个数组,其中包含不同目录的路径。

首先for循环遍历该数组以获取要检查的所有路径。

第二for像前面的答案一样循环遍历当前测试目录的文件。

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

通过 bash 脚本与多个目录中的文件交互 的相关文章

  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • 将 PDF 转换为 600dpi 的 TIFF 和 jpg 96 dpi

    我想使用 ImageMagick 从 Python 脚本将 pdf 转换为 600 dpi 的 tiff 和 96 dpi 的 jpg 我使用 imagemagick 命令行完成了这项任务 但我想使用python中的Imagemagick将
  • sed 错误“未终止的 's' 命令”故障排除

    我正在构建一个script https stackoverflow com questions 4036832 replacing a specific term in an xml file其中 它将用文件夹路径替换 XML 文件中的模式
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • 如何查看正在运行的 tcsh 版本?

    如何查看我的 UNIX 终端中运行的 tcsh 的当前版本 看着那 这version多变的 echo version tcsh 6 14 00 Astron 2005 03 25 i386 intel linux options wide
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • 使用 awk 读取文件并搜索另一个文件

    我正在读取一个文件 每行都有数字 我需要搜索另一个满足这些数字和其他条件的文件 我正在尝试使用 awk 来做到这一点 但遇到了问题 File a txt 1476 1477 1497 现在我需要打印第 12 列包含这些数字的行以及第 3 列
  • 从 UNIX 命令行向串行端口发送字节?

    我想使用命令行将字节流发送到串行端口 这可能吗 我的串口位于 dev cu usbserial A700dYoR在我的 Mac 上 例如 如果我想将整数 50 或字符串 data 发送到该串行端口 我该怎么做 我对 UNIX 的了解非常有限
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 使用 su 和 Expect 脚本登录用户时遇到问题

    我正在为一个班级制作一个网站 您可以使用用户名和密码登录 然后它会将您带到一个显示您在班级中的成绩的页面 该网站正在运行bash脚本 https github com jduga002 rapache 并将托管在用户已有用户名和密码登录的计
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • 为什么 $((true == false)) 在 bash 中计算结果为 1?

    为什么 bash 有以下行为 echo true false 1 我本以为这会打印0 但它打印1 以下事实使情况变得更加复杂 gt echo true 0 gt echo false 0 gt echo true true 1 gt ech
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do

随机推荐

  • 在 Go 中创建空闲超时?

    我将 CloudFlare 用于我的一个大容量网站 它位于我的堆栈前面 问题是 CloudFlare 除了创建新连接之外 还使空闲连接保持打开状态 这不是我可以更改的设置 当我让 Varnish 或 Nginx 坐在前面侦听端口 80 时
  • 如何在不运行 Bash 脚本的情况下对其进行语法检查?

    是否可以在不执行 bash 脚本的情况下检查它的语法 使用 Perl 我可以运行perl c script name bash 脚本有等效的命令吗 bash n scriptname 也许有一个明显的警告 这会验证语法 但不会检查您的 ba
  • Android中的App如何以全屏模式运行

    当我将它运行到选项卡中时 我创建了一个应用程序 然后它不会全屏显示 我还完成了它的属性 全屏无标题栏 所以它没有标题 thanks 你可以加android theme android style Theme NoTitleBar Fulls
  • LineChart FX - 删除实线

    我有一个关于图表 LineChart JavaFX 的好奇问题 I have this graph dots forming a jump on the X axis as shown by the two red points I sco
  • PHP 字符串插值语法

    我尝试使用以下语法进行重定向 header location readMore php id post post id 但这没有用 只有在有人建议用大括号括起来之后它才起作用 post post id 正确的语法是 header locat
  • 日期/时间转换 ColdFusion

    我正在使用一个以 ISO 8601 格式显示日期和时间的脚本 如下所示 2012 05 17T17 35 44 000Z 但我希望在使用时以正常的 ColdFusion 时间戳格式显示 Now 符号 所以采用这种格式 ts 2012 05
  • 我如何才能对除一个程序集之外的所有程序集隐藏“setter”?

    我在中提到过这个问题我的另一个问题 但我认为值得将其分解为自己的问题 因为它并不真正依赖于我提到的其他场景 无论如何 到Q上 不知道这是否可能 寻找解决方案 解决方法 我有一个类库 除了 POCO 之外什么都没有 MyCompany MyP
  • 按下按钮,文本框中的值增加

    因此 当页面加载时 文本框将包含一个存储的值 我希望用户按下 按钮 文本框中的值将增加一 我猜这是用 JQuery 完成的 到目前为止我有关于从哪里开始的任何想法
  • 如何使用 Typescript 中的现有枚举创建超级集枚举

    我需要使用另一个枚举创建一个枚举 如下所示 enum problems eazy medium hard enum moreProblems eazy medium hard frenzy 我需要更多问题枚举使用枚举问题 用例 当枚举 B
  • 使用 Win32 C++ 访问受保护的网络共享

    有没有办法使用 Win32 C API 访问登录 密码保护的网络共享 列出文件并获取其名称和创建日期 我不希望 samba 网络共享出现在我的资源管理器中 这可以通过 WNetAddConnection2 方法来完成 谢谢大家 虽然我同意本
  • 命名空间 clr-namespace <...> 中不存在名称 <...>

    我有一个小型 WPF 应用程序 过去可以正常编译 但现在不行了 我真的不能说它在哪一点停止了建设 前一天还好好的 第二天就不行了 这是项目结构 除了标准 net dll 之外 没有其他项目或外部引用 这是问题产生的用户控件
  • 在 C# 中定义 get 或 set

    朋友们 我在 C 类中使用 get 或 set 时遇到问题 当我使用 get 或 set 时给出错误 类中的无效令牌 请参阅下面的代码 我有这个问题 static int abcd get return abcd thanx 这是完整的代码
  • 使用自动增量字段插入触发器之前/之后

    我在使用插入触发器时遇到问题 该触发器应该修复表中的列 id auto increment int thread id int NULL 我想要实现的是设置thread id to id如果它被插入为 NULL 我失败了 因为 using
  • 如何给 ImageView 赋予六边形形状

    如何赋予六边形形状ImageView 可以用同样的方式做吗 如果是这样那怎么办 如果这不可能通过此方法实现 那么如何实现呢
  • 如何让k8s cpu和内存HPA协同工作?

    我正在使用 k8s HPA 模板作为 CPU 和内存 如下所示 apiVersion autoscaling v1 kind HorizontalPodAutoscaler metadata name Chart Name cpu labe
  • 检索任意日期之前/之后最后更新的属性

    我有兴趣检索 WikiData 项目的属性 但前提是该属性是在某个日期之前或之后添加或修改的 所以我有这个SPARQL查询获取 Q24 的所有属性 SELECT itemLabel propLabel statement property
  • 是否可以在 Rust for 循环中声明变量的类型?

    C 示例 for long i 0 i lt 101 i 在 Rust 中我尝试过 for i i64 in 1 100 我可以轻松地声明一个let i i64 for循环之前的var 但我宁愿学习正确的方法来做到这一点 但这导致 erro
  • 在 JavaScript 中正确引用 ASP.NET 用户控件中的控件

    我有一个 ASP NET 用户控件 其中包含一个文本框控件和一个按钮控件 该用户控件将多次添加到我的网页中 我需要一段 JavaScript 只要文本框发生更改就会运行 并在文本框的值无效时禁用按钮 我的问题是 如何将 JavaScript
  • b 表中的 BootstrapVue 条件列

    如果当前用户是管理员 我只想显示我的专栏之一 我不知道如何使用 bootstrapVue 来做到这一点 有任何想法吗 这是基于 Troy 评论的片段 我已向名为的字段对象添加了一个自定义属性requiresAdmin 这不是标准的一部分Bo
  • 通过 bash 脚本与多个目录中的文件交互

    我生成了一个迭代多个 csv 文件的脚本 将相关文件转换为 UTF 8 bin bash cd home user prod charset text plain charset iso 8859 1 for file in csv do