mdls
特定のディレクトリとすべてのサブディレクトリを繰り返し、コマンドを使用してメタデータプロパティを別々のテキストファイルに抽出するbashスクリプトを作成しようとしています。スペースやその他の特殊文字を含むファイル名が多いので、私のコードベースは「名前にスペースを含むファイルを繰り返しますか?ただし、各ファイルの後、スクリプトはEnter/が手動で押されるのを待ちますReturn。
ファイルとフォルダを自動的に循環させるにはどうすればよいですか?
#!/bin/bash
# write metadata of files in separate file
find . -type f -name '*.*' -exec sh -c '
for file do
echo "$file"
mdls "$file" > "$file"_metadata.txt
read line </dev/tty
done
' sh {} +
ベストアンサー1
- この
read line </dev/tty
コマンドは、端末(キーボードなど)から1行を読み取ることです。これを望まない場合は、コマンドを削除してください。 - それ以外はループが正常に動作していると思いますか? (一見するとかなり良く見えます。)そうでない場合は、質問を編集して何が起こっているのかを説明してください。
-name '*.*'
ピリオド(別名「ドット」、.
)。名前が次のファイルを除外する場合いいえ含む.
(data
となどREADME
)そうであれば、これは完璧な方法です。しかし、あなたが対処したい場合みんなfiles、この句を省略-name
- findはデフォルトですべてのファイルを検索します。-type f
、およびなどの句は、すべて検索の制限(例外を除く)を指定します。-name something
-mtime value