重命名,根据新名称创建文件夹

重命名,根据新名称创建文件夹

几个月来我一直在尝试这样做,但我无法让它发挥作用。我正在尝试在 bash 中做到这一点。所有文件都在linux机器上,所以bash我猜?

我想要做的是:对于目录中的所有文件,按照以下标准重命名它们:

  • 如果文件名中包含方括号,请删除方括号并包括数字[312646416198]
  • 如果文件有年份(2018),则保留该年份(并非所有文件都有)
  • 如果文件中的括号中只有一个数字,则(1) 删除括号和数字

根据文件名的第一部分创建一个文件夹(例如第一个连字符“-”之前的所有内容),然后将该文件移动到创建的文件夹中。

例如,经过一些处理后,以下名称应该看起来像这样(理想情况下)。有些东西会被放置错误,比如标题出现在作者之前,因此新文件夹将以标题命名,而不是作者,但我可以忍受这一点,只有一小部分是这样命名的。

所以这:

The Brotherhood of the Rose - David Morrell.epub
Abbi Glines - Bad for You (2014) [9781481420761] (1).epub
Kristin Hannah - The Great Alone (2018) [9781250165619].epub
Stephanie Dray, Laura Kamoie - America's First Daughter - A Novel (2016) [9780062347268] (1).epub
Terence Hanbury White - The Once and Future King (1987) [9780441627400] (1).epub

变成这样:

The Brotherhood of the Rose
    The Brotherhood of the Rose - David Morrell.epub
Abbi Glines
    Abbi Glines - Bad for You (2014).epub
Kristin Hannah
    Kristin Hannah - The Great Alone (2018).epub
Stephanie Dray, Laura Kamoie
    Stephanie Dray, Laura Kamoie - America's First Daughter - A Novel (2016).epub
Terence Hanbury White 
    Terence Hanbury White - The Once and Future King (1987).epub

答案1

这可能会有用:

$ cat epub-cleanup.sh

#! /bin/bash

for i in *.epub; do
    mv -iv "$i" "$(echo "$i" | sed -r 's/\[[0-9]+\]//;s/\([0-9]\)//;s/[ ]*.epub/.epub/')"
done
  1. 删除 [0123456789] 的单个实例
  2. 删除 (1) 的单个实例
  3. 清除文件扩展名之前的尾随空格

答案2

我会使用zshshell 而不是bash

set -o extendedglob
for file (*' - '*.epub) {
  newfile=${file// #(\[<->\]|\((<->~<1000-2020>)\))}
  dir=${newfile%% - *}
  mkdir -p -- $dir &&
    mv -i -- $file $dir/$newfile
}

(number)仅当该数字不在范围内时才删除s 1000-2020

$ tree
.
├── Abbi Glines - Bad for You (2014) [9781481420761] (1).epub
├── Kristin Hannah - The Great Alone (2018) [9781250165619].epub
├── Stephanie Dray, Laura Kamoie - America's First Daughter - A Novel (2016) [9780062347268] (1).epub
├── Terence Hanbury White - The Once and Future King (1987) [9780441627400] (1).epub
└── The Brotherhood of the Rose - David Morrell.epub

0 directories, 5 files
$ zsh ~/that-script
$ tree
.
├── Abbi Glines
│   └── Abbi Glines - Bad for You (2014).epub
├── Kristin Hannah
│   └── Kristin Hannah - The Great Alone (2018).epub
├── Stephanie Dray, Laura Kamoie
│   └── Stephanie Dray, Laura Kamoie - America's First Daughter - A Novel (2016).epub
├── Terence Hanbury White
│   └── Terence Hanbury White - The Once and Future King (1987).epub
└── The Brotherhood of the Rose
    └── The Brotherhood of the Rose - David Morrell.epub

5 directories, 5 files

相关内容