1

.pl で終わるすべてのファイルを再帰的にコピーしたい

もし私が ls -R | grep -F .pl

それらすべてを見ることができますが、次のコマンドのいずれかを入力すると、現在のディレクトリにある *.pl ファイルを取得するだけです

cp -R *.pl

find . | ls *.pl

ls -r | ls *.pl

ls -R | grep -F .pl(これで私はほんの少ししか得られません)

また、scp コピーをscp -r user@address:/directory/*.pl . 使用する場合は、現在のディレクトリ内のファイルのみを取得します

すべてをfind . -name \*.pl取得するわけではなく、いくつかのファイルのみを取得します

すべてのファイル *.pl をすべてのサブディレクトリにコピーするにはどうすればよいですか?

4

2 に答える 2

2
find path/to/dir -name "*.pl" -exec "cp" "{}" your/dest/dir ";"

編集 (2015/01/23):誰かが (この投稿の編集を介して) 彼のシェルでは引用符が機能せず、引用符を削除する必要があると提案しました。それがどのシェルかはわかりませんが(:P)、次のように機能するとのことでした:

find path/to/dir -name *.pl -exec cp {} your/dest/dir \;

基本的に、引用符はファイルのリストへのアスタリスクの展開を回避するためのものでした (現在の作業ディレクトリにその拡張子を持つファイルがある場合、bash で自動的に行われます)。 bash のステートメントの終わりを示すセミコロン ( ;) の解釈を避けるため (これを find の引数として使用したい場合)。

于 2013-09-13T18:56:54.163 に答える
0

このコマンドは、必要な SSH 認証が 1 つだけで問題なく機能します。

scp $(find . -name *.pl) $server_address:/destination/path/
于 2016-03-22T03:55:27.833 に答える