ファイルのコピーと名前変更

ファイルのコピーと名前変更

私のファイル構造は次のとおりです。

My_Files:
        |-- Folder_1: 
        |           |-- a.txt
        |           |-- b.txt
        |           |-- c.txt
        |
        |-- Folder_2:
                    |-- a.txt
                    |-- b.txt

そのようなフォルダは約200個あります。

私が望むもの:

私のファイルをコピーし、同じ名前のファイル名を次のフォルダに変更したいと思います。

Final_Folder: 
            |-- a.txt
            |-- b.txt
            |-- c.txt
            |-- a1.txt (Renamed)
            |-- b1.txt (Renamed)

私がしたこと:

このコマンドを使用しましたが、結果が見つかりませんでした。

find My_Files/ -type f -print0 | xargs -0 cp -t Final_Folder/

出力は次のとおりです。

cp: 作成したばかりの「Folder_1/a.txt」を「Final_Folder/a.txt」で上書きしません。

cp: 作成したばかりの「Folder_1/b.txt」を「Final_Folder/b.txt」で上書きしません。

cp: 作成したばかりの「Folder_1/c.txt」を「Final_Folder/c.txt」で上書きしません。

cp: 作成したばかりの「Folder_2/a.txt」を「Final_Folder/a.txt」で上書きしません。

cp: 作成したばかりの「Folder_2/b.txt」を「Final_Folder/b.txt」で上書きしません。

私の目標をどのように達成できますか?

よろしくお願いします。

ベストアンサー1

シナリオを考慮してFolder 1, Folder 2, Folder 3 etc.実際に意味があると仮定すると(そうでない場合は、問題を回避するためにすべてのファイル名に現在のタイムスタンプを追加できます)Final_Folder


find . -path ./Final_Folder -prune -o -type f -exec sh -c 'fn=$(basename -- {}) ; suffix=$(dirname {} | tr / _  ) ; cp {} ./Final_Folder/${fn%.*}$suffix.${fn##*.};   ' \;


ファイル命名方式は、次の方式に従います。

[basename filename]._[basepath folder 1]_[basepath folder2]_[basepath folder[3..n].[extension]

つまり、Final_Folderのコンテンツは次のようになります。

a._Folder_1.txt
a._Folder_2.txt
a._Folder_3.txt
b._Folder_1.txt
b._Folder_2.txt
b._Folder_3.txt
c._Folder_1.txt
c._Folder_2.txt
c._Folder_3.txt

このシナリオの良い点は、階層が次のようになることです。

[YEAR]/[MONTH]/[DAY]/[filename a,b,c].txt

データを収集するときによくあるように

最上位ディレクトリで上記のコマンドを実行すると、今日コピーしたファイルのFinal_Folder名前は「

a._2019_11_10.txt
b._2019_11_10.txt
c._2019_11_10.txt
.
.
.
[a,b,c]._2019_11_10.[WITH OTHER EXTENSIONS]

特定のタイプ、名前、または特定の年、月、日付などのファイルをソート、抽出、または分析することは非常に単純な問題です。

おすすめ記事