根据文件名的第一部分将文件移动到目录?

2024-01-09

我有几千本电子书需要在通过 SSH 运行 bash 的无头 Linux 服务器上进行组织。值得庆幸的是,所有电子书都以两种约定之一命名。

  • 作者名字 作者姓氏 - 书名.pdf
  • 作者名字 作者姓氏 - 图书系列 #inSeries - 图书 标题.pdf

我想做的是将所有书籍转移到一个有组织的系统中,例如:

`DestinationDirectory/FirstLetterOfAuthorFirstName/Author Full Name/pdf's`

例如以下书籍

Andrew Weiner - Changes.pdf 
Allan Cole - Timura Trilogy 01 - When the Gods Slept.pdf

应放置在以下文件夹中

/books/A/Allan Cole/Allan Cole - Timura Trilogy 01 - When the Gods Slept.pdf
/books/A/Andrew Weiner/Andrew Weiner - Changes.pdf

我需要帮助如何将这一切放入 bash 脚本中,该脚本将获取当前目录中所有 PDF 文件的文件名,然后将文件移动到正确的目录,如果该目录尚不存在则创建该目录。


for f in *.pdf; do
    name=`echo "$f"|sed 's/ -.*//'`
    letter=`echo "$name"|cut -c1`
    dir="DestinationDirectory/$letter/$name"
    mkdir -p "$dir"
    mv "$f" "$dir"
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据文件名的第一部分将文件移动到目录? 的相关文章

  • 用于计算数据文件中数字列表的平均值的脚本

    文件data txt包含以下内容 1 00 1 23 54 4 213 2 3 4 脚本的输出应该是 ave 54 646 一些简单的脚本是首选 这是一种方法 awk s 1 END print ave s NR RS file ave 5
  • 通过shell脚本进行串口控制

    我正在开发一个方向控制器 我有一个开发板 它通过 I2C 与传感器 指南针 通信 由于主板非常有限 没有操作系统 我开发了一个简单的程序来接收以下内容 1 get 0 读取传感器的寄存器 0 2 set 0 10 将传感器的寄存器 0 设置
  • 用等号完成命令选项

    我正在尝试为可能需要表单上的长选项的命令编写一个 Bash 完成脚本 option or param value 如果用户已经在命令行上输入了一个选项 则该选项应从完成列表中排除 假设仅在命令行上指定一次给定选项才有意义 这是第一次尝试 m
  • 在 shell 脚本中将一个子字符串替换为另一个字符串

    我有 我爱苏子并结婚 我想将 苏子 更改为 萨拉 firstString I love Suzi and Marry secondString Sara 期望的结果 firstString I love Sara and Marry 要更换
  • 如何在不同目录中启动多个窗口的 tmux?

    我想使用脚本打开一个有 6 个窗口的 tmux 会话 每个窗口位于不同的目录中 我开始于我找到的一个脚本 http blog hawkhost com 2010 07 02 tmux E2 80 93 the terminal multip
  • 如何在多进程系统中实现锁定?

    我们正在并行运行许多詹金斯项目 我们使用 python 并且选择使用 pyenv 管理虚拟环境 不幸的是 pyenv 有一个众所周知的竞争条件 https github com yyuu pyenv issues 174 为了解决这个问题
  • 数组上的 Bash 子字符串扩展

    我有一组带有给定后缀的文件 例如 我有一组带有后缀的pdf文件 pdf 我想使用子字符串扩展来获取不带后缀的文件名 对于单个文件我可以使用 file test pdf echo file 0 4 要对所有文件执行此操作 我现在尝试 file
  • IBM AIX:核心-外壳:显示文件修改日期

    我想用 bash 做这样的事情 查看文件上次修改的时间 ls lha ls full time 但我必须在 AIX 上使用 core shell 怎样才能达到这样的效果呢 您可以使用 istat istat test ksh Inode 8
  • 监听外部事件。 Bash 到 NodeJS 的桥梁

    在 NodeJS 进程内部 我如何监听来自 bash 的事件 例如 NodeJS side obj on something function data console log data Bash side do something Hel
  • Bash 脚本监听按键以继续

    因此 我想编写一个由一系列步骤组成的 bash 脚本 并将其标识为 task 然而 每个步骤都只能完成并且可以根据用户的需要运行 Do task1 if keypressed stop task1 and move on this is t
  • 如何使用ssh直接连接远程docker容器

    我想直接使用 ssh 连接到远程运行的 Docker 容器 通常我可以 ssh i privateKey user host docker ps which will list all running containers docker e
  • 通过 bash 从文件中检索电子邮件主题

    我有一个 shell 脚本 它将文件从服务器邮件文件夹下载到 NAS 设备 以便客户端拥有本地备份的副本 文件保存为11469448248 H15587P19346 smtp x14 eu 2 S文件 我已将扩展名更改为标准 eml 格式
  • Bash 脚本:将数组作为参数传递给函数并打印数组

    我将一个数组传递给一个函数并尝试打印该数组的每个元素 下面是数组参数周围带有引号的代码片段 bin bash print array array for i in array with quotes do echo i done ar 1
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 不要将变量内容视为 sed 中的特殊字符

    我有以下内容sed命令 sed i 4i CHANGES CHANGELOG rst 然而 我的 CHANGES变量看起来像这样 title list elem elem 因此 上述命令失败并出现以下错误 sed e expression
  • wget 并行下载文件并重命名

    我有一个包含两列的文本文件 第一列是要保存的名称 第二列是资源的 url 地址 10000899567110806314 jpg http lifestyle inquirer net files 2018 07 t0724cheekee
  • Bash:产生当父脚本退出时退出的子进程

    我想在 Bash 中生成多个子进程 但我希望父脚本保持运行 这样发送到父脚本的信号也会影响生成的子进程 这不会这样做 parent bash usr bin bash spawnedChildProcess1 spawnedChildPro
  • 用于获取特定用户 ID 和进程数的 Bash 脚本

    我需要 bash 脚本来计算特定用户或所有用户的进程 我们可以输入 0 1 或更多参数 例如 myScript sh root deamon 应该像这样执行 root 92 deamon 8 2 users has total proces
  • 使用 IFS bash 进行 CSV 解析:选择“;”作为分隔符

    我有一个包含 130 列的 CSV 我需要用它来做 3 个 csv 我用 while 和 IFS 循环 因为我需要对每一行的变量进行一些处理 这是我所做的 while IFS read my 130 vars what i do with
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na

随机推荐

  • 两个不同长度的排序数组的中位数

    我试图理解在 O log n m 中解决这个问题的算法 其中 n 和 m 是数组的长度 我冒昧地发布了该算法解释的链接 https www geeksforgeeks org median of two sorted arrays of D
  • 使用 Sails.js 进行事务 SQL

    所以我现在已经使用了一点 NodeJS Express 我真的很想尝试使用完整的 JavaScript 堆栈重写一个相对较大的副项目 只是为了看看它是如何工作的 对于支持 Web 套接字的 REST API 的 NodeJS 后端来说 Sa
  • 为什么在使用 MediaRouteButton 时出现 java.lang.IllegalArgumentException: background can not be translucent: #0 ?

    我正在尝试将我的应用程序投射到 Chromecast 我开始添加一个按钮 然后https developers google com cast docs android sender integrate https developers g
  • 查找 Shapeless HList 的类型类实例

    说我有一个特点Show T 比如 Scalaz 中的一个 https github com scalaz scalaz blob scalaz 7 core src main scala scalaz Show scala L9 https
  • 通过分隔符将文本文件拆分为 2 个文件[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找一个简单的批处理脚本 将我
  • 重新启动具有依赖服务的服务?

    从一个开始csharp 示例 http www csharp examples net restart windows service 并适当注意相关的SO问题 从 C 重新启动 Windows 服务 https stackoverflow
  • 如何从txt文件中删除特定行及其后面的n行?

    我正在创建一个程序来更新文本文件 其中包含城市列表 New York City New York USA Newark New Jersey USA Toronto Ontario Canada 如果我想使用 bash 脚本删除 Newar
  • 如何在 Clojure 中创建惰性序列生成、匿名递归函数?

    Edit 我在写这篇文章的过程中发现了我自己问题的部分答案 但我认为它可以很容易地改进 所以无论如何我都会发布它 也许有更好的解决方案 我正在寻找一种简单的方法来定义递归函数let形式而不诉诸于letfn 这可能是一个不合理的请求 但我寻找
  • 使用 SET PROCEDURE TO 时出现错误

    首先我要说的是 我对 FoxPro 非常非常陌生 并且发现只是基础知识有点学习曲线 我正在尝试创建一个程序文件 prg 其中包含一些可以从主代码调用的公共函数 我已经添加了程序文件 公共函数 prg 并包含一个返回硬编码文字的简单函数 只是
  • 为什么 BASH_REMATCH 对于带引号的正则表达式不起作用?

    代码是这样的 bin bash if foobarbletch foo bar bl then echo The regex matches echo BASH REMATCH echo BASH REMATCH 1 echo BASH R
  • 如何从 F# Seq 获取连续值对

    我有一个序列 1 a 2 b 3 c 我怎样才能把这个seq变成 1 a 2 b 3 c 这是一个非常聪明的解决方案 let s 1 a 2 b 3 c let pairs s s gt Seq pairwise gt Seq mapi f
  • 序列化枚举

    我有一个序列化对象 我添加了一个枚举 这使得它不再与旧版本的软件兼容 我相信这是因为旧版本是用 Java 1 4 编译的 我得到 java io InvalidClassException cannot bind enum descript
  • 是否可以给光标 z 索引?

    我猜不会 但是能够设置z index使用 CSS 或 Javascript 来控制光标 假设您有一些按钮 并且您想在按钮顶部添加半透明图像以达到效果 或者在我当前的情况下 一些具有悬停和单击操作的 SVG 路径 如果我可以设置按钮或 SVG
  • Transactionscope 在打开连接对象时抛出异常此平台不支持分布式事务

    TransactionScope 在 net core 2 2 中引发异常 在这个例子中我创建了一个scope of TransactioScop 为一个工作正常的数据库打开 SQL 事务 第一笔交易后我打电话commit这将提交 SQL
  • ggplot 分面包装变量作为函数中的参数

    我正在尝试编写一个函数 其中参数之一是用于分面包装的变量 最小可重现示例 library tidyverse library ggplot2 wobble lt matrix 1 9 3 gt as tibble wibble fun lt
  • Spring Data Rest 与 Spring Data JPA

    我看过以下问题 与 Spring Data JPA 相比 使用 Spring Data REST 有何优势 https stackoverflow com questions 25604081 what are the advantages
  • 如何延迟加载数据结构(python)

    我有一些构建数据结构的方法 例如 从一些文件内容中 def loadfile FILE return some data structure created from the contents of FILE 所以我可以做类似的事情 pup
  • 如何使用 API 获取数据来初始化图表?

    我想用ngx charts对于我的项目 问题是我不明白如何使用从 api 获得的数据初始化图表 垂直条形图看起来很简单 数据具有以下类型 当我分配在constructor Object assign this data the data我从
  • iOS - iPhone:UISlider 轨道图像随机消失

    我有一个定制的 UISlider 它的轨道图像有时会消失 它是随机发生的 当它的父视图控制器被推到可见时 我从未看到它实际上消失 这是我设置 UISlider 的代码 timeSlider UISlider alloc initWithFr
  • 根据文件名的第一部分将文件移动到目录?

    我有几千本电子书需要在通过 SSH 运行 bash 的无头 Linux 服务器上进行组织 值得庆幸的是 所有电子书都以两种约定之一命名 作者名字 作者姓氏 书名 pdf 作者名字 作者姓氏 图书系列 inSeries 图书 标题 pdf 我