我有几千个名为AuthorFirstName AuthorLastName Title XX.pdf
的电子书,其中xx
是来自1-99
的数字(卷号)。
作者倾斜名称可以是多个单词,所以在这里我想将文件复制到名为AuthorFirstName AuthorLastName title
的文件夹。除了数字之外的所有内容都应该是文件夹名称,以便电子书的所有卷都在同一个文件夹中。
例如
root.....>AuthorFirstName AuthorLastName Title>AuthorFirstName AuthorLastName Title XX.pdf
答案 0 :(得分:1)
您可以混合使用find
,sed
和bash
脚本来完成任务。你必须自己编写,如果失败则请求帮助。
你也可以尝试一些现成的工具来进行大规模移动/重命名:http://tldp.org/LDP/GNU-Linux-Tools-Summary/html/mass-rename.html 从来没有使用其中一种。
答案 1 :(得分:1)
我会尝试这个:
for folder in $(ls | sed -r "s/(.*) ([0-9]{1,2})/\1/" | uniq)
do
mkdir $folder
mv $(find . -name "$folder*") $folder
done
我不知道这是否正确,但它可能会给你一些提示。
编辑:将uniq添加到管道中。
答案 2 :(得分: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