bash - Filter before copy in shell -
bash - Filter before copy in shell -
i have directory files jan 2014 nov 2014. sadly files have no dates in name, way can know month file belongs using ls -lrt
, checking month there.
so have re-create these files location based on month file created.
ls -lrt | grep oct
will give me oct files.
now, tried
ls -lrt | grep oct | cp * /../../oct2014
this didn't work. there anyway can perform such task?
edit: give thanks much replying such great answers finish explanation. humbled. seek these tomorrow morning.
further, files dealing not have special characters in names. again.
this 1 way
ls -ltr | awk '/oct/{print $nf}' | xargs -i{} cp {} newdir
or utilize find
find . -type f -newermt "oct 01" ! -newermt "oct 31" | xargs -i{} cp {} newdir
more robust find (credit broslow)
find . -type f -newermt "oct 01" ! -newermt "oct 31 23:59:59" -print0 | xargs -0 -i{} cp {} newdir
if need accurate thing in world ever
find . -type f -newermt "oct 01" ! -newermt "oct 31 23:59:59.9999999999999999999999999999999999999999999999999999999999999" -print0 | xargs -0 -i{} cp {} newdir
note just thought add together whilst parsing ls in situations unsafe (due not beingness great @ showing special characters, , programs terminate arguments spaces , newlines), if aware filenames in target folder regular names no special characters or spaces parsing ls
work fine. . names of files @ discretion of user though, in cases names can alter improve utilize find
solution.
bash shell filter copy cp
Comments
Post a Comment