mirror of
https://github.com/rust-lang-nursery/rust-cookbook
synced 2024-11-28 22:30:21 +00:00
Added file names modified in the last 24 hours in CWD (#405)
* Update std badge version * Remove duplicate ex-format-datetime fixes #399
This commit is contained in:
parent
24602267ea
commit
ecc4c2ea4b
3 changed files with 71 additions and 3 deletions
|
@ -38,6 +38,7 @@
|
||||||
| [Parse string into DateTime struct][ex-parse-datetime] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
| [Parse string into DateTime struct][ex-parse-datetime] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
||||||
| [Perform checked date and time calculations][ex-datetime-arithmetic] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
| [Perform checked date and time calculations][ex-datetime-arithmetic] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
||||||
| [Examine the date and time][ex-examine-date-and-time] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
| [Examine the date and time][ex-examine-date-and-time] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
||||||
|
| [File names that have been modified in the last 24 hours for the working directory][ex-file-24-hours-modified] | [![std-badge]][std] | [![cat-filesystem-badge]][cat-filesystem] [![cat-os-badge]][cat-os] |
|
||||||
|
|
||||||
[ex-std-read-lines]: #ex-std-read-lines
|
[ex-std-read-lines]: #ex-std-read-lines
|
||||||
<a name="ex-std-read-lines"></a>
|
<a name="ex-std-read-lines"></a>
|
||||||
|
@ -1705,6 +1706,64 @@ fn main() {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[ex-file-24-hours-modified]: #ex-file-24-hours-modified
|
||||||
|
<a name="ex-file-24-hours-modified"></a>
|
||||||
|
## File names that have been modified in the last 24 hours for the working directory
|
||||||
|
|
||||||
|
[![std-badge]][std] [![cat-filesystem-badge]][cat-filesystem]
|
||||||
|
|
||||||
|
Gets the current working directory by calling [`env::current_dir`],
|
||||||
|
then for each entries in [`fs::read_dir`], extracts the
|
||||||
|
[`DirEntry::path`] and gets the metada via [`fs::Metadata`]. The
|
||||||
|
[`Metadata::modified`] returns the [`SystemTime::elapsed`] time since
|
||||||
|
last modification of the entry. It's converted into seconds with
|
||||||
|
[`Duration::as_secs`] and compared with 24 hours (24 * 60 * 60
|
||||||
|
seconds). [`Metadata::is_file`] is used to filter out directories.
|
||||||
|
|
||||||
|
```rust
|
||||||
|
# #[macro_use]
|
||||||
|
# extern crate error_chain;
|
||||||
|
#
|
||||||
|
use std::{env, fs};
|
||||||
|
|
||||||
|
# error_chain! {
|
||||||
|
# foreign_links {
|
||||||
|
# Io(std::io::Error);
|
||||||
|
# SystemTimeError(std::time::SystemTimeError);
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
fn run() -> Result<()> {
|
||||||
|
let current_dir = env::current_dir()?;
|
||||||
|
println!(
|
||||||
|
"Entries modified in the last 24 hours in {:?}:",
|
||||||
|
current_dir
|
||||||
|
);
|
||||||
|
|
||||||
|
for entry in fs::read_dir(current_dir)? {
|
||||||
|
let entry = entry?;
|
||||||
|
let path = entry.path();
|
||||||
|
|
||||||
|
let metadata = fs::metadata(&path)?;
|
||||||
|
let last_modified = metadata.modified()?.elapsed()?.as_secs();
|
||||||
|
|
||||||
|
if last_modified < 24 * 3600 && metadata.is_file() {
|
||||||
|
println!(
|
||||||
|
"Last modified: {:?} seconds, is read only: {:?}, size: {:?} bytes, filename: {:?}",
|
||||||
|
last_modified,
|
||||||
|
metadata.permissions().readonly(),
|
||||||
|
metadata.len(),
|
||||||
|
path.file_name().ok_or("No filename")?
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
#
|
||||||
|
# quick_main!(run);
|
||||||
|
```
|
||||||
|
|
||||||
{{#include links.md}}
|
{{#include links.md}}
|
||||||
|
|
||||||
<!-- API Reference -->
|
<!-- API Reference -->
|
||||||
|
@ -1733,7 +1792,10 @@ fn main() {
|
||||||
[`DateTime`]: https://docs.rs/chrono/*/chrono/struct.DateTime.html
|
[`DateTime`]: https://docs.rs/chrono/*/chrono/struct.DateTime.html
|
||||||
[`digest::Context`]: https://docs.rs/ring/*/ring/digest/struct.Context.html
|
[`digest::Context`]: https://docs.rs/ring/*/ring/digest/struct.Context.html
|
||||||
[`digest::Digest`]: https://docs.rs/ring/*/ring/digest/struct.Digest.html
|
[`digest::Digest`]: https://docs.rs/ring/*/ring/digest/struct.Digest.html
|
||||||
|
[`DirEntry::path`]: https://doc.rust-lang.org/std/fs/struct.DirEntry.html#method.path
|
||||||
[`Display`]: https://doc.rust-lang.org/std/fmt/trait.Display.html
|
[`Display`]: https://doc.rust-lang.org/std/fmt/trait.Display.html
|
||||||
|
[`Duration::as_secs`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.as_secs
|
||||||
|
[`env::current_dir`]: https://doc.rust-lang.org/std/env/fn.current_dir.html
|
||||||
[`error_chain!`]: https://docs.rs/error-chain/*/error_chain/macro.error_chain.html
|
[`error_chain!`]: https://docs.rs/error-chain/*/error_chain/macro.error_chain.html
|
||||||
[`Error`]: https://doc.rust-lang.org/std/error/trait.Error.html
|
[`Error`]: https://doc.rust-lang.org/std/error/trait.Error.html
|
||||||
[`ErrorKind`]: https://docs.rs/error-chain/*/error_chain/example_generated/enum.ErrorKind.html
|
[`ErrorKind`]: https://docs.rs/error-chain/*/error_chain/example_generated/enum.ErrorKind.html
|
||||||
|
@ -1742,11 +1804,15 @@ fn main() {
|
||||||
[`File::try_clone`]: https://doc.rust-lang.org/std/fs/struct.File.html#method.try_clone
|
[`File::try_clone`]: https://doc.rust-lang.org/std/fs/struct.File.html#method.try_clone
|
||||||
[`File`]: https://doc.rust-lang.org/std/fs/struct.File.html
|
[`File`]: https://doc.rust-lang.org/std/fs/struct.File.html
|
||||||
[`foreign_links`]: https://docs.rs/error-chain/*/error_chain/#foreign-links
|
[`foreign_links`]: https://docs.rs/error-chain/*/error_chain/#foreign-links
|
||||||
|
[`fs::Metadata`]: https://doc.rust-lang.org/std/fs/struct.Metadata.html
|
||||||
|
[`fs::read_dir`]: https://doc.rust-lang.org/std/fs/fn.read_dir.html
|
||||||
[`gen_ascii_chars`]: https://docs.rs/rand/*/rand/trait.Rng.html#method.gen_ascii_chars
|
[`gen_ascii_chars`]: https://docs.rs/rand/*/rand/trait.Rng.html#method.gen_ascii_chars
|
||||||
[`HashMap`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html
|
[`HashMap`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html
|
||||||
[`hmac::Signature`]: https://docs.rs/ring/*/ring/hmac/struct.Signature.html
|
[`hmac::Signature`]: https://docs.rs/ring/*/ring/hmac/struct.Signature.html
|
||||||
[`IndependentSample::ind_sample`]: https://doc.rust-lang.org/rand/rand/distributions/trait.IndependentSample.html#tymethod.ind_sample
|
[`IndependentSample::ind_sample`]: https://doc.rust-lang.org/rand/rand/distributions/trait.IndependentSample.html#tymethod.ind_sample
|
||||||
[`Lines`]: https://doc.rust-lang.org/std/io/struct.Lines.html
|
[`Lines`]: https://doc.rust-lang.org/std/io/struct.Lines.html
|
||||||
|
[`Metadata::is_file`]: https://doc.rust-lang.org/std/fs/struct.Metadata.html#method.is_file
|
||||||
|
[`Metadata::modified`]: https://doc.rust-lang.org/std/fs/struct.Metadata.html#method.modified
|
||||||
[`Mmap::map`]: https://docs.rs/memmap/*/memmap/struct.Mmap.html#method.map
|
[`Mmap::map`]: https://docs.rs/memmap/*/memmap/struct.Mmap.html#method.map
|
||||||
[`Mutex`]: https://doc.rust-lang.org/std/sync/struct.Mutex.html
|
[`Mutex`]: https://doc.rust-lang.org/std/sync/struct.Mutex.html
|
||||||
[`MutexGuard`]: https://doc.rust-lang.org/std/sync/struct.MutexGuard.html
|
[`MutexGuard`]: https://doc.rust-lang.org/std/sync/struct.MutexGuard.html
|
||||||
|
@ -1784,6 +1850,7 @@ fn main() {
|
||||||
[`seek`]: https://doc.rust-lang.org/std/fs/struct.File.html#method.seek
|
[`seek`]: https://doc.rust-lang.org/std/fs/struct.File.html#method.seek
|
||||||
[`std::io::Error`]: https://doc.rust-lang.org/std/io/struct.Error.html
|
[`std::io::Error`]: https://doc.rust-lang.org/std/io/struct.Error.html
|
||||||
[`Stdio::piped`]: https://doc.rust-lang.org/std/process/struct.Stdio.html
|
[`Stdio::piped`]: https://doc.rust-lang.org/std/process/struct.Stdio.html
|
||||||
|
[`SystemTime::elapsed`]: https://doc.rust-lang.org/std/time/struct.SystemTime.html#method.elapsed
|
||||||
[`time::Duration`]: https://doc.rust-lang.org/std/time/struct.Duration.html
|
[`time::Duration`]: https://doc.rust-lang.org/std/time/struct.Duration.html
|
||||||
[`time::Instant::elapsed`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.elapsed
|
[`time::Instant::elapsed`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.elapsed
|
||||||
[`time::Instant::now`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.now
|
[`time::Instant::now`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.now
|
||||||
|
|
|
@ -56,6 +56,7 @@ community. It needs and welcomes help. For details see
|
||||||
| [Parse string into DateTime struct][ex-parse-datetime] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
| [Parse string into DateTime struct][ex-parse-datetime] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
||||||
| [Perform checked date and time calculations][ex-datetime-arithmetic] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
| [Perform checked date and time calculations][ex-datetime-arithmetic] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
||||||
| [Examine the date and time][ex-examine-date-and-time] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
| [Examine the date and time][ex-examine-date-and-time] | [![chrono-badge]][chrono] | [![cat-date-and-time-badge]][cat-date-and-time] |
|
||||||
|
| [File names that have been modified in the last 24 hours for the working directory][ex-file-24-hours-modified] | [![std-badge]][std] | [![cat-filesystem-badge]][cat-filesystem] [![cat-os-badge]][cat-os] |
|
||||||
|
|
||||||
## [Encoding](encoding.html)
|
## [Encoding](encoding.html)
|
||||||
|
|
||||||
|
@ -188,7 +189,7 @@ community. It needs and welcomes help. For details see
|
||||||
[ex-extract-hashtags]: basics.html#ex-extract-hashtags
|
[ex-extract-hashtags]: basics.html#ex-extract-hashtags
|
||||||
[ex-extract-links-webpage]: net.html#ex-extract-links-webpage
|
[ex-extract-links-webpage]: net.html#ex-extract-links-webpage
|
||||||
[ex-extract-mediawiki-links]: net.html#ex-extract-mediawiki-links
|
[ex-extract-mediawiki-links]: net.html#ex-extract-mediawiki-links
|
||||||
[ex-format-datetime]: basics.html#ex-format-datetime
|
[ex-file-24-hours-modified]: basics.html#ex-file-24-hours-modified
|
||||||
[ex-file-post]: net.html#ex-file-post
|
[ex-file-post]: net.html#ex-file-post
|
||||||
[ex-file-predicate]: app.html#ex-file-predicate
|
[ex-file-predicate]: app.html#ex-file-predicate
|
||||||
[ex-file-sizes]: app.html#ex-file-sizes
|
[ex-file-sizes]: app.html#ex-file-sizes
|
||||||
|
|
|
@ -112,7 +112,7 @@ Keep lines sorted.
|
||||||
[serde-json-badge]: https://badge-cache.kominick.com/crates/v/serde_json.svg?label=serde_json
|
[serde-json-badge]: https://badge-cache.kominick.com/crates/v/serde_json.svg?label=serde_json
|
||||||
[serde-json]: https://docs.serde.rs/serde_json/
|
[serde-json]: https://docs.serde.rs/serde_json/
|
||||||
[serde]: https://docs.rs/serde/
|
[serde]: https://docs.rs/serde/
|
||||||
[std-badge]: https://badge-cache.kominick.com/badge/std-1.22.1-blue.svg
|
[std-badge]: https://badge-cache.kominick.com/badge/std-1.25.0-blue.svg
|
||||||
[std]: https://doc.rust-lang.org/std
|
[std]: https://doc.rust-lang.org/std
|
||||||
[syslog-badge]: https://badge-cache.kominick.com/crates/v/syslog.svg?label=syslog
|
[syslog-badge]: https://badge-cache.kominick.com/crates/v/syslog.svg?label=syslog
|
||||||
[syslog]: https://docs.rs/syslog/
|
[syslog]: https://docs.rs/syslog/
|
||||||
|
|
Loading…
Reference in a new issue