ファイルのリストがありますフォルダA:
- Chapter1_ja.md
- Chapter2_ja.md
- Chapter3_en.md
私には目標がありますフォルダBサブフォルダ(a、b、c、dなど。フォルダ名は任意):
- フォルダB
- ㅏ
- Chapter1_ja.md
- 第二
- やるべきことはありません。
- 氏
- Chapter2_ja.md
- D
- その他のファイル.md
- 金利
- Chapter3_en.md
- ㅏ
私がしたいこと:
- 各ファイルにフォルダA
- サブフォルダを探すフォルダB同じ名前のファイルが含まれている場合
- フォルダA/chapter1_cn.md - >フォルダB/a/chapter1_cn.md
- フォルダA/chapter2_en.md - >フォルダB/c/chapter2_en.md
- ターゲットでファイルが見つかった場合はコピー(上書き)
Linuxコマンドラインで(1行)コマンドを使用してこれを行う方法はありますか?
マイユースケースは、最初に複数のサブフォルダから単一のフォルダに翻訳するファイルを収集した翻訳ユースケースです。翻訳者からファイルを再インポートした後、ファイルを元の場所に再配布したいと思います。私の場合は、ファイル名が一意であることを確認できますが、命名規則に従わずに複数のフォルダに分散されています。
答え1
これLinuxのコマンドラインそれはあなたが考えるものとは異なります。 Linux は、Unix ファミリと Unix ファミリではなく、オペレーティングシステムの中核にあるカーネルに過ぎません。
私たちが言ったことコマンドライン多くの行中心の一般的にインタラクティブなプログラミング言語やツールの構文を採用するコードです。たとえば、nslookup
DNSクエリを入力するためのコマンドライン、gdb
操作のためgdb
のコマンドライン、またはパラメータを含むコマンドを実行し、入力を別のコマンド/出力にリダイレクトまたはリンクできるシェルコマンドラインがあります。
Linuxカーネル自体にもコマンドラインがあります。これは起動時にブートローダに渡されるコマンドのリストです。でその内容を見つけることができますが、/proc/cmdline
ここでは役に立ちません。
行ベースであるかどうかにかかわらず、多くのプログラミング言語はファイルをコピーできますが、プログラミングの質問はほとんどunix.stackexchange.comの範囲外です(質問が移行されたstackoverflow.com姉妹サイトにあります)。
ただし、Unix シェルもスコープに含まれます。ファイルにコピーコマンド(たとえばcp
、、pax
など)を呼び出すことで、rsync
その中にあるファイルをコピーできます。
これらのUnixシェルの1つは次のとおりです。zsh
では、zsh
次のことができます。
for src (A/*(N.)) for dst (B/*/$src:t(N.)) cp $src $dst
どのループ定期的な(.
glob修飾子を使用)同じ名前(ail)を持ち、通常のサブディレクトリ内のすべてのファイルに対してそのA
ファイルをコピーします。B
t
$src