neues Projekt angefangen

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2024-01-05 00:21:45 +01:00
commit d6bfcd51aa
4 changed files with 85 additions and 0 deletions

68
src/main.rs Normal file
View File

@@ -0,0 +1,68 @@
//! # date_renamer
//! Kleines Programm, dass hilft Datumsangaben aus Dateinamen an den Anfang des Dateinamens zu bringen.
//! Beispiel:
//!
//! | Dateiname vor Umbenennung | Dateiname nach Umbenennung |
//! |---------------------------|----------------------------|
//! | irgend_eine_datei_dat20231231_test.pdf | 20231231_irgend_eine_datei_test.pdf |
//!
//! ## Verwendung
//! Das binary wird mit dem Pfad zu einem Ordner aufgerufen, z.B. DateRenamer _/home/srichter/Test-Ordner_.
//! Dieser Ordner wird dann (nicht-rekursiv) nach Dateien durchsucht und diese ggf. umbenannt.
use std::env;
use std::path::Path;
use std::path::PathBuf;
use std::fs;
/// Informationen zur Programm-Funktion
fn usage(command: &String) {
println!("Usage: {} <dir>",command);
}
/// Einsprung für die Verarbeitung des angegebenen Verzeichnisses
fn process_dir(directory: &String) {
let path = Path::new(directory);
assert!(env::set_current_dir(&path).is_ok());
let entries = fs::read_dir(".").unwrap();
println!("contents of {}:",path.display());
for entry in entries {
let path = entry.unwrap().path();
if path.is_file() {
process_file(&path);
}
}
}
/// Verarbeitung einer einzelnen Datei im Verzeichnis
fn process_file(file: &PathBuf){
let name = file.file_name().unwrap().to_str().unwrap();
let mut vec = Vec::new();
for part in name.split("_"){
match part.get(..3) {
Some("dat") => vec.insert(0,part.get(3..).unwrap()),
_ => vec.push(part),
}
}
let new_name = vec.join("_");
println!("- {}{}",name,new_name);
let _ = fs::rename(name,new_name);
}
/// Einsprungpunkt.
/// * Prüft, on ein Parameter (Verzeichnis) angegeben wurde
/// * ruft dann entsprechend _usage_ oder _process_dir_ auf.
fn main() {
let args: Vec<String> = env::args().collect();
let command = &args[0];
if args.len() != 2 {
return usage(command);
}
let dir = &args[1];
println!("Started {} on {}",command,dir);
process_dir(dir);
}