0

我有几千本名为 的电子书AuthorFirstName AuthorLastName Title XX.pdf,其中xx编号来自1-99(卷号)。

作者倾斜名称可以是多个单词,所以在这里我想将文件复制到具有名称的文件夹中AuthorFirstName AuthorLastName title。除了数字之外的所有内容都应该是文件夹名称,以便电子书的所有卷都在同一个文件夹中。

例如

root.....>AuthorFirstName AuthorLastName Title>AuthorFirstName AuthorLastName Title XX.pdf
4

3 回答 3

1

我会尝试这个:

for folder in $(ls | sed -r "s/(.*) ([0-9]{1,2})/\1/" | uniq)
do 
    mkdir $folder
    mv $(find . -name "$folder*") $folder
done    

我不知道这是否正确,但它可能会给你一些提示。

编辑:将 uniq 添加到管道中。

于 2013-04-03T09:13:14.587 回答
1

您可以为任务混合使用find,sedbash脚本。但是,您必须自己编写它,并在失败时寻求帮助。

您还可以尝试一些现成的大规模移动/重命名工具,如下所示: http: //tldp.org/LDP/GNU-Linux-Tools-Summary/html/mass-rename.html 从未使用过其中之一。

于 2013-04-03T09:09:30.657 回答
0

使用如下所示的循环:

find . -type f -name "*pdf" -print0 | while IFS= read -d '' file
do
    # extract the name of the directory to create
    dirName="${file% *}"

    # create the directory if it doesn't exist
    [[ ! -d "$dirName" ]] && mkdir "$dirName"

    mv "$file" "$dirName"
done
于 2013-04-03T09:25:20.597 回答