コマンドラインを使用してこのフォルダの内容をマージしたいと思います。
.
├── folder1
│ │ file.txt
│
├── folder2
│ │ file.txt
│
└───folder3
│ file.txt
どうすればいいですか?
答え1
cp
ついに私はこれを使ってこれをすることができました--backup
バナー。
cp --backup=numbered */*.txt new_directory/
答え2
次のコマンドラインループは、現在のディレクトリにあるフォルダ「folder *」の各フォルダの(最上位)コンテンツを「new_directory」というディレクトリにコピーします。デフォルトでは、globは/*
「ドットファイル」と一致しません。shopt -s dotglob
この動作を変更するには。同じ(デフォルト)ファイル名がnew_directoryにすでに存在する場合は、ターゲットファイルの前に元のフォルダ(および下線)を追加して一意にします。
1行にすべて:
for f in folder*/*; do [ ! -e "new_directory/$(basename "$f")" ] && { cp "$f" new_directory/; continue; }; [ -e "new_directory/$(basename "$f")" ] && cp "$f" "new_directory/$(dirname "$f")_$(basename "$f")"; done
読みやすいように分類:
for f in folder*/*
do
[ ! -e "new_directory/$(basename "$f")" ] && { cp "$f" new_directory/; continue; }
[ -e "new_directory/$(basename "$f")" ] && cp "$f" "new_directory/$(dirname "$f")_$(basename "$f")"
done
計画があれば移動するただ元の場所からファイルをcp
変更しますmv
。