bash - Get index of argument with xargs? -
in bash, have list of files named same (in different sub directories) , want order them creation/modified time, this:
ls -1t /tmp/tmp-*/my-file.txt | xargs ...
i rename files sort of index or can move them same folder. result ideally like:
my-file0.txt my-file1.txt my-file2.txt
something that. how go doing this?
you can loop through these files , keep appending incrementing counter desired file name:
for f in /tmp/tmp-*/my-file.txt; fname="${f##*/}" fname="${fname%.*}"$((i++)).txt mv "$f" "/dest/dir/$fname" done
edit: in order sort listed files modification time case ls -1t
can use script:
while ifs= read -d '' -r f; f="${f#* }" fname="${f##*/}" fname="${fname%.*}"$((i++)).txt mv "$f" "/dest/dir/$fname" done < <(find /tmp/tmp-* -name 'my-file.txt' -printf "%t@ %p\0" | sort -zk1nr)
this handles filenames special characters white spaces, newlines, glob characters etc since ending each filename nul or \0
character in -printf
option. note using sort -z
handle nul terminated data.
Comments
Post a Comment