0

ファイル名に基づいて作成されたフォルダーにファイルを移動するスクリプトを作成しようとしています。各ファイルには、名前がまったく同じでファイル拡張子が異なる 2 つのコピーがあります。

dir1 - one.txt one.rtf two.txt two.rtf other.txt other.rtf

dir1 - one two other

dir1/one - one.txt one.rtf

dir1/two - two.txt two.rtf

dir1/other - other.txt other.rtf

以前にファイルからフォルダーへのスクリプトをまとめましたが、複数のファイルを1つのフォルダーに入れる方法がわかりません

ファイルからフォルダーへのコードをここに示します。

#!/bin/bash

dir="/home/user1/Desktop/f2f/"

for file in ${dir}/*
do
        mkdir -p "${file/./#}"
        mv "${file}" "${file/./#}/"
done

とにかく助けをいただければ幸いです。命名規則とファイル拡張子は常に同じです。

4

1 に答える 1

0

<file>.<extension>名前を付け<filename>#<extension>た場所ごとにフォルダーを生成するように見えるため、元のスクリプトの目的が何であるかはよくわかりません<file>.<extension>

あなたが探しているバージョンはこれだと思います:

for file in *
do
    mkdir -p ${file%.*}
    mv $file ${file%.*}/
done

ファイル名から最後のコンポーネントのみを削除したいので、単一の (!) で貪欲でないバリアントを使用してください。%

たとえばfirst.part.second.part.txt、削除したい場所にのみ名前を付けたファイルを想像してください。.txt

find dir1( )の前に次のフォルダ レイアウトがあるとします。

dir1/
dir1/two.txt
dir1/one.rtf
dir1/two.rtf
dir1/other.txt
dir1/other.rtf
dir1/one.txt

これにより、後で次のレイアウトが得られます(find dir1再度):

dir1
dir1/other
dir1/other/other.txt
dir1/one
dir1/one/one.rtf
dir1/one/one.txt
dir1/two
dir1/two/two.txt
dir1/two/two.rtf

それがあなたが探していたものなら。

于 2013-03-24T02:33:02.313 に答える