9

コマンドラインからディレクトリ (およびサブディレクトリ) 内のすべてのファイルにアクセスする方法を探しています。これは、開発マシンで私の同期されたレポが少しずれてしまったためです。

次の同期を行う前に、このマシンで時間的にすべてを優先したいと思います。

すべてのファイルに触れる簡単な方法はありますか?

それとも、ディレクトリを手動で同期した方がよいでしょうか?

(参考までに、同期にはドロップボックスを使用しています)

4

2 に答える 2

15

findとともに使用xargsして、現在または指定されたディレクトリ以下のすべてのファイルにアクセスできます。

find . -print0 | xargs -0 touch

現在のディレクトリ用。指定されたディレクトリの場合:

find /path/to/dir -print0 | xargs -0 touch

区切り文字を NULL にすることで、スペースを含むファイル名に対してコマンドを堅牢にするオプション-print0find一緒のオプション-0xargs

編集:

Jeremy J Starchar がコメントで述べているように、上記はGNU ツールチェーンの一部である場合findにのみ適しています。xargsGNU ツールを備えたシステムを使用している場合は、次を使用できます。

find . -exec touch {} \;

dcgregoryaによる編集:

非常に大きなデータセットに対してこれを行う必要があるため、このコマンドが (はるかに) 高速であることがわかりました。

find ./ -type d -print0 | xargs -I{} -0 bash -c "touch {}/*"

find をフォルダーの検索に限定し、フォルダー /* に対して touch を実行します。

于 2012-09-17T14:23:51.420 に答える
0

So this is a solution to my immediate problem of touching all files, whether it works with dropbox will have to be seen.

In the root of the directory in question

find . -print -exec touch {} \;

(print is extraneous but it can be helpful for feedback)

于 2012-09-18T09:49:43.607 に答える