0

のような名前の数千の電子書籍がありますAuthorFirstName AuthorLastName Title XX.pdf。ここでxx、番号は1-99(巻番号) からのものです。

著者のティルト名は複数の単語にすることができるので、ここでファイルを名前のフォルダにコピーして移動したいと思いますAuthorFirstName AuthorLastName title。eBook のすべての巻が同じフォルダに入るように、番号以外はすべてフォルダ名にする必要があります。

例えば

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

3 に答える 3

1

findタスクには、sedbashスクリプトを組み合わせて使用​​できます。ただし、自分で作成し、失敗した場合は助けを求める必要があります。

次のような大量の移動/名前変更のためのいくつかの準備が整ったツールを試すこともできます :

于 2013-04-03T09:09:30.657 に答える
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 に答える
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 に答える