Cp
複製和重命名文件
我的文件結構如下:
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:不會用 ‘Final_Folder/a.txt’ 覆蓋剛剛創建的 ‘Folder_1/a.txt’
cp:不會用 ‘Final_Folder/b.txt’ 覆蓋剛剛創建的 ‘Folder_1/b.txt’
cp:不會用 ‘Final_Folder/c.txt’ 覆蓋剛剛創建的 ‘Folder_1/c.txt’
cp:不會用 ‘Final_Folder/a.txt’ 覆蓋剛剛創建的 ‘Folder_2/a.txt’
cp:不會用 ‘Final_Folder/b.txt’ 覆蓋剛剛創建的 ‘Folder_2/b.txt’
我怎樣才能達到我的目標?
提前致謝。
鑑於您的方案,並假設
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]
排序、提取或分析特定類型或名稱的文件,或從給定的年份、月份或日期等等將是一件非常簡單的事情。