bash - need help utilizing find command and xargs command -


i'm trying write simple scripts can mv every file within folder folder generated current date. initiatives.

#!/bin/bash  storage_folder=`date +%f` # date generated name folder  mkdir "$storage_folder" #createing folder store data   find "$pwd" | xargs -e mv "$storage_folder" # mv everyfile folder 

xargs not needed. try:

find . -exec mv -t "$storage_folder" {} + 

notes:

  1. find's -exec feature eliminates needs xargs.

  2. because . refers current working directoy, find "$pwd" same simpler find ..

  3. the -t target option mv tells mv move files target directory. handy here because allows fit mv command natural format find -exec command.

posix

if not have gnu tools, mv may not have -t option. in case:

find . -exec sh -c 'mv -- "$1" "$storage_folder"' move {} \; 

the above creates 1 shell process each move. more efficient approach, suggested charles duffy in comments, passes in target directory using $0:

find . -exec sh -c 'mv -- "$@" "$0"' "$storage_folder" {} + 

safety

as gordon davisson points out in comments, safety, may want use -i or -n options mv files @ destination not overwritten without explicit approval.


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -