.png
このコマンドが17ファイルを現在のディレクトリ内のサブディレクトリにコピーしていないのはなぜですか?
$ find . -maxdepth 1 -mtime -3 | wc -l
17
$ find . -maxdepth 1 -mtime -3 -print0 | grep -z loader | xargs -r0 cp -t ./user_name_tutorial/
$ find . -maxdepth 1 -mtime -3 -print0
../Plugins.png./Screenshot from 2015-08-06 22:30:56.png./Screenshot from 2015-08-06 22:28:21.png./Plugins_ex-in-post.png./Screenshot from 2015-08-06 22:31:14.png./Pages_visit_site.png./user_name_tutorial./Page_edit.png./Screenshot from 2015-08-06 22:28:52.png./Page_edit-visual.png./Plugins-google-maps_v2-example.png./Screenshot from 2015-08-06 22:29:27.png./Plugin_google_apps.png./Screenshot from 2015-08-06 22:30:44.png./Media_uploads.png./Plugins_add_new.pnguser_name@COMP_NAME-X:~/Pictures$
答え1
あなたは私たちに結果を示しました
find . -maxdepth 1 -mtime -3 -print0
の出力は何ですか
find . -maxdepth 1 -mtime -3 -print0 | grep -z loader
?loader
表示された出力にその単語を含むファイル名は表示されません。の出力grep
(つまり、の入力xargs
)に何も含まれていないと、当然何もコピーされません。
返品、
find … | grep foo
find … -name "*foo*"
代わりにプロセスを話して保存できます。
とは別に:-maxdepth 1
(ご存知のように)現在のディレクトリに検索を制限するを使用していることが確認されました。そのエントリがない場合は、find
サブディレクトリを見つけてfind … | grep foo
次の情報を提供します。みんなfood_fight
次にかかわらず、名前が、またはであるサブディレクトリfootball
のファイルpound_foolish
記録したもの名前、その後grep
全体(.
-relative) ファイル名だけでなくパス名です。-maxdepth 1
find
現在のディレクトリ内のサブディレクトリ名の報告を防ぎません。したがって、名前がloader
(または)のサブother_loader_files
ディレクトリがある場合その名前に渡されますcp
。これはあなたが言わなかったのでエラーメッセージを表示するだけですcp -r
。しかし、気をつけて不快なことをすることができる同様の状況があるかもしれません。- と言うことで、上記の(潜在的な)問題を回避できます
-type f
。 -mtime -3
ご存知のように、編集日に基づいて検索を制限することを使用していることがわかります。-mtime -3
または、同じ検索制限テストを使用しない場合、ワイルドカード(しばしば「glob」またはファイル名拡張パターンと呼ばれる)を-type f
使用することは、find … -maxdepth 1
次のワイルドカードを使用するのとほぼ同じです。cp -t ./user_name_tutorial/ *loader*
または
cp *loader* ./user_name_tutorial/