Linux sort by month and year - linux

I am trying to sort this data by the date such as the Oct 30 2020 column however I am not sure how
here is my current command
sudo find / -maxdepth 4 -size +1M -exec ls -lh {} \; | sort -k 6hr
Here is my output
-rw-r--r-- 1 root root 80M Oct 30 2020 /usr/lib/x86_64-linux-gnu/libLLVM-11.so.1
-rw-r--r-- 1 root root 38M Aug 27 13:02 /var/cache/apt/srcpkgcache.bin
-rw-r--r-- 1 root root 38M Sep 6 15:57 /var/cache/apt/pkgcache.bin
-rw-r--r-- 1 root root 27M Mar 17 2020 /usr/lib/x86_64-linux-gnu/libicudata.so.66.1
-rwxr-xr-x 1 root root 27M Feb 2 2021 /usr/lib/snapd/snapd
-rwxr-xr-x 1 root root 23M Feb 2 2021 /usr/bin/snap
-rwxr-xr-x 1 root root 16M Feb 2 2021 /usr/lib/snapd/snap-bootstrap
-rwxr-xr-x 1 root root 12M Feb 2 2021 /usr/lib/snapd/snap-repair
-r--r--r-- 1 root root 9.5M Feb 19 2021 /usr/lib/udev/hwdb.bin
-rw-r--r-- 1 root root 9.0M Dec 18 2020 /usr/lib/x86_64-linux-gnu/libvulkan_intel.so
-rwxr-xr-x 1 root root 8.8M Feb 2 2021 /usr/lib/snapd/snap-preseed
-rw-r--r-- 1 root root 8.7M May 29 00:49 /usr/lib/x86_64-linux-gnu/libtsan.so.0.0.0
-rwxr-xr-x 1 root root 8.7M Feb 2 2021 /usr/lib/snapd/snap-recovery-chooser
-rwxr-xr-x 1 root root 8.3M Feb 2 2021 /usr/lib/snapd/snapctl
-rw-r--r-- 1 root root 7.2M Dec 18 2020 /usr/lib/x86_64-linux-gnu/libvulkan_radeon.so
-rw-r--r-- 1 root root 6.3M Dec 16 2020 /usr/lib/x86_64-linux-gnu/libpthread.a
-rwxr-xr-x 1 root root 5.8M Feb 2 2021 /usr/lib/snapd/snap-update-ns
-rw-r--r-- 1 root root 5.6M Jan 16 2020 /usr/lib/file/magic.mgc
-rw-r--r-- 1 root root 5.5M Dec 16 2020 /usr/lib/x86_64-linux-gnu/libc.a
-rwxr-xr-x 1 root root 5.3M Jul 28 2020 /usr/bin/python3.8
-rw-r--r-- 1 root root 5.2M Jul 28 2020 /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
-r-xr-xr-x 2 admin1 admin1 4.7M Aug 26 02:01 /mnt/c/Windows/explorer.exe
-rwxr-xr-x 1 root root 4.6M Feb 2 2021 /usr/lib/snapd/snap-failure
-rwxrwxrwx 1 admin1 admin1 4.3M Jun 28 16:08 /mnt/c/Python39/python39.dll
-rwxr-xr-x 1 root root 3.9M Feb 2 2021 /usr/lib/snapd/snap-exec
-rw-r--r-- 1 root root 3.4M Oct 19 2020 /usr/lib/x86_64-linux-gnu/libperl.so.5.30.0
-rwxr-xr-x 2 root root 3.4M Oct 19 2020 /usr/bin/perl
Thanks so much!!

Or a version that uses a different magic spell for ls:
sudo find / -maxdepth 4 -size +1M -exec ls -lh --time-style=long-iso {} \; | sort -k6
Because it thoroughly annoys me that ls doesn't show years by default when timestamps lie within the last 6 months and MMM DD YYYY makes no sense to me in the first place I've exported TIME_STYLE=long-iso in my ~/.bashrc ... so much more logical and easy to sort.

You can do this with what is called a decorate + sort + undecorate approach where you decorate each line by adding a new column at the end (a new column 10) in the form yyyymmdd and then sort by the new last column and then remove (undecorate) the output by removing the last column.
awk is the normal choice, and this works quite well as long as the filenames do NOT contain whitespace (which would skew the column (field) count for awk).
In your case you could do:
sudo find / -maxdepth 4 -size +1M -exec ls -lh {} \; |
awk 'BEGIN {
m["Jan"]=1; m["Feb"]=2; m["Mar"]=3; m["Apr"]=4; m["May"]=5; m["Jun"]=6;
m["Jul"]=7; m["Aug"]=8; m["Sep"]=9; m["Oct"]=10; m["Nov"]=11; m["Dec"]=12}
{
year = ($8 ~ /:/) ? 2021 : $8
mon = (length(m[$6]) < 2) ? "0"m[$6] : m[$6]
day = (length($7) < 2) ? "0"$7 : $7
$(NF+1) = year mon day
}1
' | sort -k 10 | awk '{$NF = ""}1'
Above, the first call to awk decorates each line with the new yyyymmdd column (new column (field) 10) and then the results are sorted by field 10 with sort. The second awk command undecorates each line.
Example Use/Output
Taking your shown output and placing it in the file file you could sort as:
awk 'BEGIN {
m["Jan"]=1; m["Feb"]=2; m["Mar"]=3; m["Apr"]=4; m["May"]=5; m["Jun"]=6;
m["Jul"]=7; m["Aug"]=8; m["Sep"]=9; m["Oct"]=10; m["Nov"]=11; m["Dec"]=12}
{
year = ($8 ~ /:/) ? 2021 : $8
mon = (length(m[$6]) < 2) ? "0"m[$6] : m[$6]
day = (length($7) < 2) ? "0"$7 : $7
$(NF+1) = year mon day
}1
' file | sort -k 10 | awk '{$NF = ""}1'
-rw-r--r-- 1 root root 5.6M Jan 16 2020 /usr/lib/file/magic.mgc
-rw-r--r-- 1 root root 27M Mar 17 2020 /usr/lib/x86_64-linux-gnu/libicudata.so.66.1
-rw-r--r-- 1 root root 5.2M Jul 28 2020 /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
-rwxr-xr-x 1 root root 5.3M Jul 28 2020 /usr/bin/python3.8
-rw-r--r-- 1 root root 3.4M Oct 19 2020 /usr/lib/x86_64-linux-gnu/libperl.so.5.30.0
-rwxr-xr-x 2 root root 3.4M Oct 19 2020 /usr/bin/perl
-rw-r--r-- 1 root root 80M Oct 30 2020 /usr/lib/x86_64-linux-gnu/libLLVM-11.so.1
-rw-r--r-- 1 root root 5.5M Dec 16 2020 /usr/lib/x86_64-linux-gnu/libc.a
-rw-r--r-- 1 root root 6.3M Dec 16 2020 /usr/lib/x86_64-linux-gnu/libpthread.a
-rw-r--r-- 1 root root 7.2M Dec 18 2020 /usr/lib/x86_64-linux-gnu/libvulkan_radeon.so
-rw-r--r-- 1 root root 9.0M Dec 18 2020 /usr/lib/x86_64-linux-gnu/libvulkan_intel.so
-rwxr-xr-x 1 root root 12M Feb 2 2021 /usr/lib/snapd/snap-repair
-rwxr-xr-x 1 root root 16M Feb 2 2021 /usr/lib/snapd/snap-bootstrap
-rwxr-xr-x 1 root root 23M Feb 2 2021 /usr/bin/snap
-rwxr-xr-x 1 root root 27M Feb 2 2021 /usr/lib/snapd/snapd
-rwxr-xr-x 1 root root 3.9M Feb 2 2021 /usr/lib/snapd/snap-exec
-rwxr-xr-x 1 root root 4.6M Feb 2 2021 /usr/lib/snapd/snap-failure
-rwxr-xr-x 1 root root 5.8M Feb 2 2021 /usr/lib/snapd/snap-update-ns
-rwxr-xr-x 1 root root 8.3M Feb 2 2021 /usr/lib/snapd/snapctl
-rwxr-xr-x 1 root root 8.7M Feb 2 2021 /usr/lib/snapd/snap-recovery-chooser
-rwxr-xr-x 1 root root 8.8M Feb 2 2021 /usr/lib/snapd/snap-preseed
-r--r--r-- 1 root root 9.5M Feb 19 2021 /usr/lib/udev/hwdb.bin
-rw-r--r-- 1 root root 8.7M May 29 00:49 /usr/lib/x86_64-linux-gnu/libtsan.so.0.0.0
-rwxrwxrwx 1 admin1 admin1 4.3M Jun 28 16:08 /mnt/c/Python39/python39.dll
-r-xr-xr-x 2 admin1 admin1 4.7M Aug 26 02:01 /mnt/c/Windows/explorer.exe
-rw-r--r-- 1 root root 38M Aug 27 13:02 /var/cache/apt/srcpkgcache.bin
-rw-r--r-- 1 root root 38M Sep 6 15:57 /var/cache/apt/pkgcache.bin
Note, you use of -exec in the find command is horribly inefficient and you are better served using the -printf option with available format specifiers that can create the file output in any order you like and decorate the output for you with yyyymmdd. That would save calling ls -lh on each file to produce the file listing.
There are other ways to approach this, so do not think this is the only one-way to do this. Further note the limitation on whitespace in the filename corrupting the fields if this approach is used.

GNU date can parse the format printed by ls. The following converts the date into Unix epoch seconds and uses a Schwartzian transform to sort the lines. The transform needs four steps:
Calculate the sort key
Prefix the data with the sort key
Sort the prefixed data
Remove the prefix
while read line; do
date=$(sed 's/ / /g' <<< "$line" | cut -d ' ' -f 6-8)
epoch=$(date -d "$date" +%s)
printf '%s %s\n' "$epoch" "$line"
done | sort -n | sed 's/^[0-9]* //'
But: Why you shouldn't parse the output of ls(1)
Instead it would be better to tell find to print just the time and the file name. This can be sorted, the sort key can be removed, and finally the file names can be passed to ls. But you have to use the option -f to keep the sort order.
sudo find / -maxdepth 4 -size +1M -printf "%C# %p\n" |
sort -n |
sed 's/^[0-9.]* //' |
xargs ls -flh

Related

linux find files by created in last X minutes + sort does not return expected list

I have a folder with many jpg files, where each file name presents the creation time in the form of: "20220204T160311.746....jpg" ("..." represent additional data).
I'm trying to get all files created on the last X minutes. There are tons of results for such query if one asks Google, nevertheless, I'm getting weird results when trying the following:
find . -cmin -50 \( ! -iname "*.csv" ! -iname ".*" \) -ls | sort -n
the results do not start ok ("now" is 16:26):
14466561 2636 -rw-r--r-- 1 root root 2695349 Feb 4 16:03 ./20220204T160348.526-cam4-791-AREASbw-32358.jpg
14466569 2208 -rw-r--r-- 1 root root 2257356 Feb 4 16:03 ./20220204T160354.069-cam4-614.jpg
14466571 1044 -rw-r--r-- 1 root root 1068758 Feb 4 16:03 ./20220204T160354.069-cam4-614__chng_182.jpg
14466579 2208 -rw-r--r-- 1 root root 2258697 Feb 4 16:03 ./20220204T160359.296-cam4-352.jpg
14466581 1048 -rw-r--r-- 1 root root 1070111 Feb 4 16:03 ./20220204T160359.296-cam4-352__chng_175.jpg
14466589 2216 -rw-r--r-- 1 root root 2268675 Feb 4 16:04 ./20220204T160404.682-cam4-179.jpg
14466591 1048 -rw-r--r-- 1 root root 1070053 Feb 4 16:04 ./20220204T160404.682-cam4-179__chng_273.jpg
14466597 2204 -rw-r--r-- 1 root root 2253706 Feb 4 16:04 ./20220204T160409.957-cam4-571.jpg
14466599 1048 -rw-r--r-- 1 root root 1070335 Feb 4 16:04 ./20220204T160409.957-cam4-571__chng_154.jpg
14466600 1044 -rw-r--r-- 1 root root 1068675 Feb 4 16:04 ./20220204T160409.957-cam4-571__chng_309.jpg
14466601 2652 -rw-r--r-- 1 root root 2712638 Feb 4 16:04 ./20220204T160409.957-cam4-571-AREASbw-31696.jpg
14466610 2208 -rw-r--r-- 1 root root 2259408 Feb 4 16:04 ./20220204T160415.421-cam4-959.jpg
14466611 1048 -rw-r--r-- 1 root root 1070365 Feb 4 16:04 ./20220204T160415.421-cam4-959__chng_272.jpg
14466620 2212 -rw-r--r-- 1 root root 2264606 Feb 4 16:04 ./20220204T160420.666-cam4-742.jpg
14466621 1048 -rw-r--r-- 1 root root 1070276 Feb 4 16:04 ./20220204T160420.666-cam4-742__chng_173.jpg
and when I continue to scroll up, it arrives to a part where the files are wrongly sorted (like what supposed to be the start of the list):
14457644 2240 -rw-r--r-- 1 root root 2293209 Feb 4 16:26 ./20220204T162633.985-cam4-188.jpg
14457645 1056 -rw-r--r-- 1 root root 1080805 Feb 4 16:26 ./20220204T162633.985-cam4-188__chng_171.jpg
14457658 2236 -rw-r--r-- 1 root root 2286664 Feb 4 16:26 ./20220204T162639.299-cam4-801.jpg
14457659 1056 -rw-r--r-- 1 root root 1080042 Feb 4 16:26 ./20220204T162639.299-cam4-801__chng_158.jpg
14462048 2200 -rw-r--r-- 1 root root 2252735 Feb 4 15:49 ./20220204T154927.284-cam4-095.jpg
14462049 1044 -rw-r--r-- 1 root root 1065249 Feb 4 15:49 ./20220204T154927.284-cam4-095__chng_134.jpg
14462088 2204 -rw-r--r-- 1 root root 2255657 Feb 4 15:49 ./20220204T154932.490-cam4-571.jpg
14462089 1044 -rw-r--r-- 1 root root 1066449 Feb 4 15:49 ./20220204T154932.490-cam4-571__chng_228.jpg
14462118 2204 -rw-r--r-- 1 root root 2254481 Feb 4 15:49 ./20220204T154937.767-cam4-237.jpg
14462127 1044 -rw-r--r-- 1 root root 1066700 Feb 4 15:49 ./20220204T154937.767-cam4-237__chng_79.jpg
How come in the middle it goes back from 15:49 to 16:26?
It happens on every query I'm running, unless it is on a short term like 10 min.
By default sort uses the first column. Use -k to specify column number to sort by.
find . -cmin -50 \( ! -iname "*.csv" ! -iname ".*" \) -ls | sort -n -k 7

NodeJS child_process: npm - command not found

In my bundled Electron app, I have it extract a node project to a location. There is a script that is supposed to run npm install and when I run it through spawn, I get an error saying npm isn't found.
The code I'm using is:
const process = spawn('my_script.sh', {shell: 'bin/bash', detached: true});
#!/bin/bash
cd <location of package.json>
npm install
In the process of trying to debug this, I've done the following:
The command is able to be run when I pull up a new command line and running which npm points to /usr/bin.
I checked the PATH variable from the script that is run by spawn (putting echo $PATH) and it returns:
/snap/<app_name>/x1/usr/sbin:
/snap/<app_name>/x1/usr/bin:
/snap/<app_name>/x1/sbin:
/snap/<app_name>/x1/bin:
/usr/local/sbin:
/usr/local/bin:
/usr/sbin:
/usr/bin:
/sbin:
/bin:
/usr/games:
/usr/local/games:
/snap/<app_name>/x1/gnome-platform/usr/bin
which includes /usr/bin
I then printed the contents of /usr/bin from the script (added ls -l /usr/bin) and noticed that npm, node, and yarn were not in it. I then opened a new window and ran the command directly and the list was substantially longer then what was returned by the script
The result of ls -l /usr/bin when ran from the script (missing node, yarn, npm, and countless other files):
-rwxr-xr-x 1 root root 51384 Jan 18 2018 [
-rwxr-xr-x 1 root root 22696 Sep 27 2018 aa-enabled
-rwxr-xr-x 1 root root 22696 Sep 27 2018 aa-exec
-rwxr-xr-x 1 root root 22608 Mar 5 11:23 addpart
-rwxr-xr-x 1 root root 35032 Jan 18 2018 arch
lrwxrwxrwx 1 root root 4 Jul 7 05:47 awk -> mawk
-rwxr-xr-x 1 root root 55512 Jan 18 2018 b2sum
-rwxr-xr-x 1 root root 39096 Jan 18 2018 base32
-rwxr-xr-x 1 root root 39096 Jan 18 2018 base64
-rwxr-xr-x 1 root root 35000 Jan 18 2018 basename
-rwxr-xr-x 1 root root 7115 Jun 6 2019 bashbug
-rwxr-xr-x 1 root root 34952 May 3 06:30 bootctl
-rwxr-xr-x 1 root root 67672 May 3 06:30 busctl
lrwxrwxrwx 1 root root 3 May 23 2018 captoinfo -> tic
-rwxr-xr-x 1 root root 3329 Jun 4 12:25 catchsegv
-rwxr-xr-x 1 root root 853 Jul 15 2016 cautious-launcher
-rwxr-sr-x 1 root shadow 71816 Mar 22 2019 chage
lrwxrwxrwx 1 root root 11 Jun 18 2017 chardet3 -> chardetect3
-rwxr-xr-x 1 root root 389 Jun 18 2017 chardetect3
-rwxr-xr-x 1 root root 14336 Jan 22 08:40 chattr
-rwxr-xr-x 1 root root 63672 Jan 18 2018 chcon
-rwsr-xr-x 1 root root 76496 Mar 22 2019 chfn
-rwxr-xr-x 1 root root 30800 Mar 5 11:23 chrt
-rwsr-xr-x 1 root root 44528 Mar 22 2019 chsh
-rwxr-xr-x 1 root root 35000 Jan 18 2018 cksum
-rwxr-xr-x 1 root root 10240 May 23 2018 clear
-rwxr-xr-x 1 root root 10312 Jun 6 2019 clear_console
-rwxr-xr-x 1 root root 390 Jan 15 10:35 cloud-id
-rwxr-xr-x 1 root root 394 Jan 15 10:35 cloud-init
-rwxr-xr-x 1 root root 2108 Jan 14 14:27 cloud-init-per
-rwxr-xr-x 1 root root 47200 Aug 4 2017 cmp
-rwxr-xr-x 1 root root 39128 Jan 18 2018 comm
lrwxrwxrwx 1 root root 11 Jul 15 2016 compose -> run-mailcap
lrwxrwxrwx 1 root root 35 Aug 7 2018 console-conf -> ../share/subiquity/console-conf-tui
-rwxr-xr-x 1 root root 1565 Jul 7 05:45 core-sshd-host-keygen
-rwxr-xr-x 1 root root 6332 May 27 14:15 c_rehash
-rwxr-xr-x 1 root root 51416 Jan 18 2018 csplit
lrwxrwxrwx 1 root root 6 May 11 09:40 ctstat -> lnstat
-rwxr-xr-x 1 root root 43224 Jan 18 2018 cut
-rwxr-xr-x 1 root root 10224 Jun 11 13:25 dbus-cleanup-sockets
-rwxr-xr-x 1 root root 236584 Jun 11 13:25 dbus-daemon
-rwxr-xr-x 1 root root 22520 Jun 11 13:25 dbus-monitor
-rwxr-xr-x 1 root root 10224 Jun 11 13:25 dbus-run-session
-rwxr-xr-x 1 root root 26608 Jun 11 13:25 dbus-send
-rwxr-xr-x 1 root root 14320 Jun 11 13:25 dbus-update-activation-environment
-rwxr-xr-x 1 root root 10224 Jun 11 13:25 dbus-uuidgen
-rwxr-xr-x 1 root root 20142 Oct 25 2017 deb-systemd-helper
-rwxr-xr-x 1 root root 4434 Oct 25 2017 deb-systemd-invoke
-rwxr-xr-x 1 root root 22608 Mar 5 11:23 delpart
-rwxr-xr-x 1 root root 2550 Apr 1 2018 dh_bash-completion
-rwxr-xr-x 1 root root 145752 Aug 4 2017 diff
-rwxr-xr-x 1 root root 63704 Aug 4 2017 diff3
-rwxr-xr-x 1 root root 47296 Jan 18 2018 dircolors
-rwxr-xr-x 1 root root 30904 Jan 18 2018 dirname
-rwxr-xr-x 1 root root 153952 Sep 5 2019 dpkg-deb
-rwxr-xr-x 1 root root 100568 Jan 18 2018 du
-rwxr-xr-x 1 root root 7297 Apr 13 2018 ec2metadata
lrwxrwxrwx 1 root root 11 Jul 15 2016 edit -> run-mailcap
lrwxrwxrwx 1 root root 8 Jul 7 05:47 editor -> vim.tiny
-rwxr-xr-x 1 root root 35000 Jan 18 2018 env
lrwxrwxrwx 1 root root 8 Jul 7 05:47 ex -> vim.tiny
-rwxr-xr-x 1 root root 39128 Jan 18 2018 expand
-rwxr-sr-x 1 root shadow 22808 Mar 22 2019 expiry
-rwxr-xr-x 1 root root 47288 Jan 18 2018 expr
-rwxr-xr-x 1 root root 75992 Jan 18 2018 factor
-rwxr-xr-x 1 root root 18728 Mar 22 2019 faillog
-rwxr-xr-x 1 root root 26704 Mar 5 11:23 fallocate
-rwxr-xr-x 1 root root 238080 Nov 5 2017 find
-rwxr-xr-x 1 root root 30880 Mar 5 11:23 flock
-rwxr-xr-x 1 root root 43192 Jan 18 2018 fmt
-rwxr-xr-x 1 root root 35000 Jan 18 2018 fold
-rwxr-xr-x 1 root root 18512 Aug 9 2019 free
-rwxr-xr-x 1 root root 30856 Jun 4 12:25 getconf
-rwxr-xr-x 1 root root 31224 Jun 4 12:25 getent
-rwxr-xr-x 1 root root 14408 Mar 5 11:23 getopt
-rwsr-xr-x 1 root root 75824 Mar 22 2019 gpasswd
-rwxr-xr-x 1 root root 437264 Jan 10 2019 gpgv
-rwxr-xr-x 1 root root 35000 Jan 18 2018 groups
-rwxr-xr-x 1 root root 21883 Apr 13 2018 growpart
-rwxr-xr-x 1 root root 43224 Jan 18 2018 head
-rwxr-xr-x 1 root root 2514 Feb 2 2018 helpztags
-rwxr-xr-x 1 root root 30904 Jan 18 2018 hostid
-rwxr-xr-x 1 root root 18504 May 3 06:30 hostnamectl
lrwxrwxrwx 1 root root 7 Mar 5 11:23 i386 -> setarch
-rwxr-xr-x 1 root root 63744 Jun 4 12:25 iconv
-rwxr-xr-x 1 root root 43224 Jan 18 2018 id
-rwxr-xr-x 1 root root 59464 May 23 2018 infocmp
lrwxrwxrwx 1 root root 3 May 23 2018 infotocap -> tic
-rwxr-xr-x 1 root root 145664 Jan 18 2018 install
-rwxr-xr-x 1 root root 26704 Mar 5 11:23 ionice
-rwxr-xr-x 1 root root 26768 Mar 5 11:23 ipcmk
-rwxr-xr-x 1 root root 26704 Mar 5 11:23 ipcrm
-rwxr-xr-x 1 root root 51280 Mar 5 11:23 ipcs
lrwxrwxrwx 1 root root 19 Nov 11 2017 iptables-xml -> /sbin/xtables-multi
-rwxr-xr-x 1 root root 10280 Dec 30 2017 ischroot
-rwxr-xr-x 1 root root 47320 Jan 18 2018 join
lrwxrwxrwx 1 root root 16 Jul 7 05:47 jsondiff -> python3-jsondiff
lrwxrwxrwx 1 root root 17 Jul 7 05:47 jsonpatch -> python3-jsonpatch
lrwxrwxrwx 1 root root 19 Jul 7 05:47 jsonpointer -> python3-jsonpointer
lrwxrwxrwx 1 root root 18 Jul 7 05:47 jsonschema -> python3-jsonschema
-rwxr-xr-x 1 root root 4508 Jan 28 2018 kernel-install
-rwxr-xr-x 1 root root 43088 Mar 5 11:23 last
lrwxrwxrwx 1 root root 4 Mar 5 11:23 lastb -> last
-rwxr-xr-x 1 root root 18504 Mar 22 2019 lastlog
-rwxr-xr-x 1 root root 7786 Feb 25 2018 lcf
-rwxr-xr-x 1 root root 5422 Jun 4 12:25 ldd
lrwxrwxrwx 1 root root 9 Jul 7 05:46 less -> /bin/less
lrwxrwxrwx 1 root root 13 Jul 7 05:46 lessecho -> /bin/lessecho
lrwxrwxrwx 1 root root 13 Jul 7 05:46 lessfile -> /bin/lessfile
lrwxrwxrwx 1 root root 12 Jul 7 05:46 lesskey -> /bin/lesskey
lrwxrwxrwx 1 root root 13 Jul 7 05:46 lesspipe -> /bin/lesspipe
-rwxr-xr-x 1 root root 30904 Jan 18 2018 link
lrwxrwxrwx 1 root root 7 Mar 5 11:23 linux32 -> setarch
lrwxrwxrwx 1 root root 7 Mar 5 11:23 linux64 -> setarch
-rwxr-xr-x 1 root root 22888 May 11 09:40 lnstat
-rwxr-xr-x 1 root root 50592 Jun 4 12:25 locale
-rwxr-xr-x 1 root root 10240 Jan 30 06:28 locale-check
-rwxr-xr-x 1 root root 22600 May 3 06:30 localectl
-rwxr-xr-x 1 root root 338744 Jun 4 12:25 localedef
-rwxr-xr-x 1 root root 47792 Mar 5 11:23 logger
-rwxr-xr-x 1 root root 30904 Jan 18 2018 logname
-rwxr-xr-x 1 root root 10240 Jan 22 08:40 lsattr
-rwxr-xr-x 1 root root 71760 Mar 5 11:23 lscpu
-rwxr-xr-x 1 root root 71760 Mar 5 11:23 lsipc
-rwxr-xr-x 1 root root 35232 Mar 5 11:23 lslocks
-rwxr-xr-x 1 root root 63568 Mar 5 11:23 lslogins
-rwxr-xr-x 1 root root 43088 Mar 5 11:23 lsmem
-rwxr-xr-x 1 root root 38992 Mar 5 11:23 lsns
-rwxr-xr-x 1 root root 125416 Apr 3 2018 mawk
-rwxr-xr-x 1 root root 30864 Mar 5 11:23 mcookie
-rwxr-xr-x 1 root root 43224 Jan 18 2018 md5sum
lrwxrwxrwx 1 root root 6 Jan 18 2018 md5sum.textutils -> md5sum
-rwxr-xr-x 1 root root 10312 Mar 5 11:23 mesg
-rwxr-xr-x 1 root root 35098 Apr 9 2018 miniterm
-rwxr-xr-x 1 root root 63672 Jan 18 2018 mkfifo
-rwxr-xr-x 1 root root 189432 Jul 5 2018 mksquashfs
-rwxr-xr-x 1 root root 865 Jul 7 05:45 mkswapfile
-rwxr-xr-x 1 root root 26704 Mar 5 11:23 namei
lrwxrwxrwx 1 root root 4 Jul 7 05:47 nawk -> mawk
-rwsr-xr-x 1 root root 40344 Mar 22 2019 newgrp
-rwxr-xr-x 1 root root 35000 Jan 18 2018 nice
-rwxr-xr-x 1 root root 43288 Jan 18 2018 nl
-rwxr-xr-x 1 root root 35000 Jan 18 2018 nohup
-rwxr-xr-x 1 root root 35000 Jan 18 2018 nproc
-rwxr-xr-x 1 root root 31008 Mar 5 11:23 nsenter
-rwxr-xr-x 1 root root 26696 May 11 09:40 nstat
-rwxr-xr-x 1 root root 63736 Jan 18 2018 numfmt
-rwxr-xr-x 1 root root 67800 Jan 18 2018 od
-rwxr-xr-x 1 root root 723944 May 27 14:15 openssl
lrwxrwxrwx 1 root root 14 Jul 7 05:47 pager -> ../../bin/less
-rwxr-xr-x 1 root root 88144 Mar 5 11:23 partx
-rwsr-xr-x 1 root root 59640 Mar 22 2019 passwd
-rwxr-xr-x 1 root root 35032 Jan 18 2018 paste
-rwxr-xr-x 1 root root 35000 Jan 18 2018 pathchk
lrwxrwxrwx 1 root root 6 Oct 25 2018 pdb3 -> pdb3.6
lrwxrwxrwx 1 root root 23 Apr 17 20:56 pdb3.6 -> ../lib/python3.6/pdb.py
-rwxr-xr-x 2 root root 2097720 Nov 19 2018 perl
-rwxr-xr-x 2 root root 2097720 Nov 19 2018 perl5.26.1
-rwxr-xr-x 1 root root 26712 Aug 9 2019 pgrep
-rwxr-xr-x 1 root root 39128 Jan 18 2018 pinky
lrwxrwxrwx 1 root root 5 Aug 9 2019 pkill -> pgrep
-rwxr-xr-x 1 root root 18656 Jun 4 12:25 pldd
-rwxr-xr-x 1 root root 30808 Aug 9 2019 pmap
-rwxr-xr-x 1 root root 71960 Jan 18 2018 pr
lrwxrwxrwx 1 root root 11 Jul 15 2016 print -> run-mailcap
-rwxr-xr-x 1 root root 30904 Jan 18 2018 printenv
-rwxr-xr-x 1 root root 51384 Jan 18 2018 printf
-rwxr-xr-x 1 root root 35424 Mar 5 11:23 prlimit
lrwxrwxrwx 1 root root 28 Oct 15 2018 probert -> ../share/probert/bin/probert
-rwxr-xr-x 1 root root 71928 Jan 18 2018 ptx
-rwxr-xr-x 1 root root 10312 Aug 9 2019 pwdx
-rwxr-xr-x 1 root root 7812 Oct 25 2018 py3clean
-rwxr-xr-x 1 root root 12119 Oct 25 2018 py3compile
lrwxrwxrwx 1 root root 31 Oct 25 2018 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root 8 Oct 25 2018 pydoc3 -> pydoc3.6
-rwxr-xr-x 1 root root 79 Apr 17 20:56 pydoc3.6
lrwxrwxrwx 1 root root 12 Oct 25 2018 pygettext3 -> pygettext3.6
-rwxr-xr-x 1 root root 21547 Apr 17 20:56 pygettext3.6
-rwxr-xr-x 1 root root 372 Sep 25 2017 pyjwt3
lrwxrwxrwx 1 root root 9 Oct 25 2018 python3 -> python3.6
-rwxr-xr-x 2 root root 4526456 Apr 17 20:56 python3.6
-rwxr-xr-x 2 root root 4526456 Apr 17 20:56 python3.6m
-rwxr-xr-x 1 root root 1018 Oct 28 2017 python3-jsondiff
-rwxr-xr-x 1 root root 3661 Oct 28 2017 python3-jsonpatch
-rwxr-xr-x 1 root root 1342 May 1 2016 python3-jsonpointer
-rwxr-xr-x 1 root root 398 Nov 15 2017 python3-jsonschema
lrwxrwxrwx 1 root root 10 Oct 25 2018 python3m -> python3.6m
lrwxrwxrwx 1 root root 3 Jul 7 05:47 rcp -> scp
-rwxr-xr-x 1 root root 26696 May 11 09:40 rdma
-rwxr-xr-x 1 root root 47320 Jan 18 2018 realpath
-rwxr-xr-x 1 root root 14408 Mar 5 11:23 rename.ul
-rwxr-xr-x 1 root root 14408 Mar 5 11:23 renice
lrwxrwxrwx 1 root root 4 May 23 2018 reset -> tset
-rwxr-xr-x 1 root root 38992 Mar 5 11:23 resizepart
-rwxr-xr-x 1 root root 10312 Mar 5 11:23 rev
-rwxr-xr-x 1 root root 30 Jul 11 2017 rgrep
lrwxrwxrwx 1 root root 3 Jul 7 05:47 rlogin -> ssh
-rwxr-xr-x 1 root root 208 May 11 09:40 routef
-rwxr-xr-x 1 root root 1656 May 11 09:40 routel
lrwxrwxrwx 1 root root 3 Jul 7 05:47 rsh -> ssh
lrwxrwxrwx 1 root root 6 May 11 09:40 rtstat -> lnstat
-rwxr-xr-x 1 root root 35000 Jan 18 2018 runcon
-rwxr-xr-x 1 root root 18161 Jul 15 2016 run-mailcap
lrwxrwxrwx 1 root root 8 Jul 7 05:47 rview -> vim.tiny
-rwxr-xr-x 1 root root 10469 Dec 30 2017 savelog
-rwxr-xr-x 1 root root 100496 Mar 4 2019 scp
-rwxr-xr-x 1 root root 30792 Mar 5 11:23 script
-rwxr-xr-x 1 root root 26704 Mar 5 11:23 scriptreplay
-rwxr-xr-x 1 root root 51296 Aug 4 2017 sdiff
lrwxrwxrwx 1 root root 11 Jul 15 2016 see -> run-mailcap
-rwxr-xr-x 1 root root 2442 Mar 12 2018 select-editor
-rwxr-xr-x 1 root root 1209 Mar 12 2018 sensible-browser
-rwxr-xr-x 1 root root 1109 Mar 12 2018 sensible-editor
-rwxr-xr-x 1 root root 433 Mar 12 2018 sensible-pager
-rwxr-xr-x 1 root root 47288 Jan 18 2018 seq
-rwxr-xr-x 1 root root 18784 Mar 5 11:23 setarch
-rwxr-xr-x 1 root root 10312 Mar 5 11:23 setsid
-rwxr-xr-x 1 root root 43088 Mar 5 11:23 setterm
-rwxr-xr-x 1 root root 153960 Mar 4 2019 sftp
lrwxrwxrwx 1 root root 6 Mar 22 2019 sg -> newgrp
-rwxr-xr-x 1 root root 47320 Jan 18 2018 sha1sum
-rwxr-xr-x 1 root root 55512 Jan 18 2018 sha224sum
-rwxr-xr-x 1 root root 55512 Jan 18 2018 sha256sum
-rwxr-xr-x 1 root root 59608 Jan 18 2018 sha384sum
-rwxr-xr-x 1 root root 59608 Jan 18 2018 sha512sum
-rwxr-xr-x 1 root root 59608 Jan 18 2018 shred
-rwxr-xr-x 1 root root 55480 Jan 18 2018 shuf
-rwxr-xr-x 1 root root 26704 Aug 9 2019 skill
-rwxr-xr-x 1 root root 18512 Aug 9 2019 slabtop
lrwxrwxrwx 1 root root 3 Mar 4 2019 slogin -> ssh
lrwxrwxrwx 1 root root 32 Jul 7 05:47 snap -> /snap/snapd/current/usr/bin/snap
lrwxrwxrwx 1 root root 20 Jul 7 05:47 snapctl -> ../lib/snapd/snapctl
lrwxrwxrwx 1 root root 5 Aug 9 2019 snice -> skill
-rwxr-xr-x 1 root root 113120 Jan 18 2018 sort
-rwxr-xr-x 1 root root 55936 Jan 18 2018 split
-rwxr-xr-x 1 root root 727848 Mar 4 2019 ssh
-rwxr-xr-x 1 root root 346248 Mar 4 2019 ssh-add
-rwxr-sr-x 1 root crontab 362640 Mar 4 2019 ssh-agent
-rwxr-xr-x 1 root root 1456 Jan 16 2018 ssh-argv0
-rwxr-xr-x 1 root root 10658 Oct 2 2017 ssh-copy-id
-rwxr-xr-x 1 root root 420000 Mar 4 2019 ssh-keygen
-rwxr-xr-x 1 root root 420000 Mar 4 2019 ssh-keyscan
-rwxr-xr-x 1 root root 80088 Jan 18 2018 stat
-rwxr-xr-x 1 root root 47288 Jan 18 2018 stdbuf
-rwsr-xr-x 1 root root 149080 Jan 31 11:18 sudo
lrwxrwxrwx 1 root root 4 Jan 31 11:18 sudoedit -> sudo
-rwxr-xr-x 1 root root 56128 Jan 31 11:18 sudoreplay
-rwxr-xr-x 1 root root 39104 Jan 18 2018 sum
-rwxr-xr-x 1 root root 1558792 May 3 06:30 systemd-analyze
-rwxr-xr-x 1 root root 10312 May 3 06:30 systemd-cat
-rwxr-xr-x 1 root root 14408 May 3 06:30 systemd-cgls
-rwxr-xr-x 1 root root 30816 May 3 06:30 systemd-cgtop
-rwxr-xr-x 1 root root 22600 May 3 06:30 systemd-delta
-rwxr-xr-x 1 root root 10304 May 3 06:30 systemd-detect-virt
-rwxr-xr-x 1 root root 43104 May 3 06:30 systemd-mount
-rwxr-xr-x 1 root root 10304 May 3 06:30 systemd-path
-rwxr-xr-x 1 root root 88136 May 3 06:30 systemd-resolve
-rwxr-xr-x 1 root root 43080 May 3 06:30 systemd-run
-rwxr-xr-x 1 root root 18504 May 3 06:30 systemd-socket-activate
-rwxr-xr-x 1 root root 14408 May 3 06:30 systemd-stdio-bridge
lrwxrwxrwx 1 root root 13 May 3 06:30 systemd-umount -> systemd-mount
-rwxr-xr-x 1 root root 14328 May 23 2018 tabs
-rwxr-xr-x 1 root root 39096 Jan 18 2018 tac
-rwxr-xr-x 1 root root 67832 Jan 18 2018 tail
-rwxr-xr-x 1 root root 30800 Mar 5 11:23 taskset
-rwxr-xr-x 1 root root 35032 Jan 18 2018 tee
-rwxr-xr-x 1 root root 47288 Jan 18 2018 test
-rwxr-xr-x 1 root root 84080 May 23 2018 tic
-rwxr-xr-x 1 root root 815 Jul 7 05:47 timedatectl
-rwxr-xr-x 1 root root 22600 May 3 06:30 timedatectl.real
-rwxr-xr-x 1 root root 39552 Jan 18 2018 timeout
-rwxr-xr-x 1 root root 14424 Aug 9 2019 tload
-rwxr-xr-x 1 root root 14328 May 23 2018 toe
-rwxr-xr-x 1 root root 108304 Aug 9 2019 top
lrwxrwxrwx 1 root root 10 Jul 6 23:54 touch -> /bin/touch
-rwxr-xr-x 1 root root 18456 May 23 2018 tput
-rwxr-xr-x 1 root root 47288 Jan 18 2018 tr
-rwxr-xr-x 1 root root 39096 Jan 18 2018 truncate
-rwxr-xr-x 1 root root 22528 May 23 2018 tset
-rwxr-xr-x 1 root root 35000 Jan 18 2018 tsort
-rwxr-xr-x 1 root root 30904 Jan 18 2018 tty
-rwxr-xr-x 1 root root 15397 Jun 4 12:25 tzselect
-rwxr-xr-x 1 root root 40685 Feb 25 2018 ucf
-rwxr-xr-x 1 root root 19367 Feb 25 2018 ucfq
-rwxr-xr-x 1 root root 10722 Feb 25 2018 ucfr
-rwxr-xr-x 1 root root 39128 Jan 18 2018 unexpand
-rwxr-xr-x 1 root root 43224 Jan 18 2018 uniq
-rwxr-xr-x 1 root root 30904 Jan 18 2018 unlink
-rwxr-xr-x 1 root root 18712 Mar 5 11:23 unshare
-rwxr-xr-x 1 root root 98008 Jul 5 2018 unsquashfs
-rwxr-xr-x 1 root root 47112 Sep 5 2019 update-alternatives
-rwxr-xr-x 1 root root 10312 Aug 9 2019 uptime
-rwxr-xr-x 1 root root 35000 Jan 18 2018 users
-rwxr-xr-x 1 root root 22600 Mar 5 11:23 utmpdump
-rwxr-xr-x 1 root root 6913 Apr 13 2018 vcs-run
lrwxrwxrwx 1 root root 8 Jul 7 05:47 vi -> vim.tiny
lrwxrwxrwx 1 root root 8 Jul 7 05:47 view -> vim.tiny
-rwxr-xr-x 1 root root 1108024 Mar 18 13:29 vim.tiny
-rwxr-xr-x 1 root root 34912 Aug 9 2019 vmstat
lrwxrwxrwx 1 root root 8 Jul 7 05:47 w -> w.procps
-rwxr-sr-x 1 root tty 30800 Mar 5 11:23 wall
-rwxr-xr-x 1 root root 22952 Aug 9 2019 watch
-rwxr-xr-x 1 root root 43200 Jan 18 2018 wc
-rwxr-xr-x 1 root root 27144 Mar 5 11:23 whereis
lrwxrwxrwx 1 root root 10 Jul 6 23:54 which -> /bin/which
-rwxr-xr-x 1 root root 51416 Jan 18 2018 who
-rwxr-xr-x 1 root root 30904 Jan 18 2018 whoami
-rwxr-xr-x 1 root root 63488 Sep 17 2019 wpa_passphrase
-rwxr-xr-x 1 root root 18504 Aug 9 2019 w.procps
lrwxrwxrwx 1 root root 7 Mar 5 11:23 x86_64 -> setarch
-rwxr-xr-x 1 root root 71896 Nov 5 2017 xargs
-rwxr-xr-x 1 root root 38 Jul 7 05:47 xdg-open
-rwxr-xr-x 1 root root 886 Jul 7 05:47 xdg-settings
-rwxr-xr-x 1 root root 18552 Mar 18 13:29 xxd
-rwxr-xr-x 1 root root 30904 Jan 18 2018 yes
-rwxr-xr-x 1 root root 18488 Jun 4 12:25 zdump
A snippet of the results from running it in a command line window (includes yarn, npm, and node):
// The rest is cut off
lrwxrwxrwx 1 root root 21 Apr 29 12:37 rcp -> /etc/alternatives/rcp
-rwxr-xr-x 1 root root 149096 Apr 3 01:47 rctest
-rwxr-xr-x 1 root root 9112 Mar 26 04:23 rdiffdir
-rwxr-xr-x 1 root root 133360 Feb 13 11:21 rdma
lrwxrwxrwx 1 root root 24 Apr 29 12:37 readelf -> x86_64-linux-gnu-readelf
-rwxr-xr-x 1 root root 51544 Sep 5 2019 readlink
-rwxr-xr-x 1 root root 51576 Sep 5 2019 realpath
-rwxr-xr-x 1 root root 14568 Mar 22 10:42 recode-sr-latin
-rwxr-xr-x 1 root root 3445 Oct 23 2016 recountdiff
-rwxr-xr-x 1 root root 89 Feb 22 00:20 red
-rwxr-xr-x 1 root root 34928 Oct 23 2016 rediff
...
...
...
-rwxr-xr-x 1 root root 40360 Mar 18 2018 xvidtune
-rwxr-xr-x 1 root root 18744 Feb 29 00:29 xvinfo
-rwxr-xr-x 1 root root 39232 Feb 28 17:10 xwd
lrwxrwxrwx 1 root root 34 Apr 29 12:37 x-window-manager -> /etc/alternatives/x-window-manager
-rwxr-xr-x 1 root root 51592 Feb 29 00:29 xwininfo
-rwxr-xr-x 1 root root 35120 Feb 28 17:10 xwud
lrwxrwxrwx 1 root root 31 Apr 29 12:37 x-www-browser -> /etc/alternatives/x-www-browser
-rwxr-xr-x 1 root root 18712 Apr 15 01:40 xxd
-rwxr-xr-x 1 root root 80224 Jan 27 2019 xz
lrwxrwxrwx 1 root root 2 Apr 29 12:37 xzcat -> xz
lrwxrwxrwx 1 root root 6 Apr 29 12:37 xzcmp -> xzdiff
-rwxr-xr-x 1 root root 6632 Jan 27 2019 xzdiff
lrwxrwxrwx 1 root root 6 Apr 29 12:37 xzegrep -> xzgrep
lrwxrwxrwx 1 root root 6 Apr 29 12:37 xzfgrep -> xzgrep
-rwxr-xr-x 1 root root 5628 Jan 27 2019 xzgrep
-rwxr-xr-x 1 root root 1802 Jan 27 2019 xzless
-rwxr-xr-x 1 root root 2161 Jan 27 2019 xzmore
lrwxrwxrwx 1 root root 22 Mar 9 10:51 yarn -> ../share/yarn/bin/yarn
lrwxrwxrwx 1 root root 22 Mar 9 10:51 yarnpkg -> ../share/yarn/bin/yarn
-rwxr-xr-x 1 root root 63720 Apr 7 15:15 yelp
-rwxr-xr-x 1 root root 39256 Sep 5 2019 yes
-rwxr-xr-x 1 root root 409 Apr 10 08:47 youtube-dl
lrwxrwxrwx 1 root root 8 Apr 29 12:37 ypdomainname -> hostname
-rwxr-xr-x 1 root root 1984 Dec 13 2019 zcat
-rwxr-xr-x 1 root root 1678 Dec 13 2019 zcmp
-rwxr-xr-x 1 root root 5880 Dec 13 2019 zdiff
-rwxr-xr-x 1 root root 26840 Apr 14 14:26 zdump
-rwxr-xr-x 1 root root 29 Dec 13 2019 zegrep
-rwxr-xr-x 1 root root 135960 Feb 27 03:31 zenity
-rwxr-xr-x 1 root root 29 Dec 13 2019 zfgrep
-rwxr-xr-x 1 root root 2081 Dec 13 2019 zforce
-rwxr-xr-x 1 root root 7585 Dec 13 2019 zgrep
-rwxr-xr-x 1 root root 216256 Apr 21 2017 zip
-rwxr-xr-x 1 root root 93816 Apr 21 2017 zipcloak
-rwxr-xr-x 1 root root 50718 Mar 6 15:15 zipdetails
-rwxr-xr-x 1 root root 2953 Aug 16 2019 zipgrep
-rwxr-xr-x 1 root root 186664 Aug 16 2019 zipinfo
-rwxr-xr-x 1 root root 89488 Apr 21 2017 zipnote
-rwxr-xr-x 1 root root 93584 Apr 21 2017 zipsplit
-rwxr-xr-x 1 root root 26952 Jan 30 14:30 zjsdecode
-rwxr-xr-x 1 root root 2206 Dec 13 2019 zless
-rwxr-xr-x 1 root root 1842 Dec 13 2019 zmore
-rwxr-xr-x 1 root root 4553 Dec 13 2019 znew
So for some reason the contents of /usr/bin is different when accessed from my distros command line v. the spawned script (1745 v. 317 lines printed when adding | wc -l). Why is this the case? I can't think of any reason that would cause this behavior, and the child process docs haven't shed any additional light.

Using indirect variable references in a Bash script

I have lots of old log files in a directory, with apps logs generated every month to this directory. I want to use a script to remove only the last month old logs.
This is my file logsDir , these files are 0kb, i have created for question understanding
[root#dasari9 logDir]# ls -ltr
total 136
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram9.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram8.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram7.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram6.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram69.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram68.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram67.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram66.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram5.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram59.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram58.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram57.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram56.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram4.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram49.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram48.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram47.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram46.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram3.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram39.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram38.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram37.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram36.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram2.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram29.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram28.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram27.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram26.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram1.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram19.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram18.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram17.logs
-rw-r--r-- 1 root root 0 Mar 20 12:22 ram16.logs
This is my logs.sh:
#!/bin/bash
Jan=Dec Feb=Jan Mar=Feb Apr=Mar May=Apr Jun=May Jul=Jun Aug=Jul Sep=Aug Oct=Sep Nov=Oct Dev=Nov
DIR=/logDir
cd $DIR
if [ $DIR -eq $PWD ]; then
PWD=$(pwd)
cmd=$(date |awk '{print $2}')
dat=$(ls -ltr |grep $cmd |awk '{print $9}')
rm -rf $dat
else
echo " enterend in the wrong dir"
fi
but it's failing to get that variable value Apr=Mar
This is the output, I'm trying to delete Apr files
[root#dasari9 /]# bash -x log.sh
+ Jan=Dec
+ Feb=Jan
+ Mar=Feb
+ Apr=Mar
+ May=Apr
+ Jun=May
+ Jul=Jun
+ Aug=Jul
+ Sep=Aug
+ Oct=Sep
+ Nov=Oct
+ Dev=Nov
+ DIR=/logDir
+ cd /logDir
++ pwd
+ PWD=/logDir
+ '[' /logDir == /logDir ']'
++ date
++ awk '{print $2}'
+ cmd=Apr
++ ls -ltr
++ grep '$Apr'
++ awk '{print $9}'
+ dat=
+ rm -rf
It seems like you're looking for an indirect variable reference. Your $cmd variable points to the variable $Apr and you want to use the value of $Apr.
Here's how you can do this (just the relevant lines):
cmd=$(date | awk '{print $2}')
eval month=\$$cmd
dat=$(ls -ltr | grep $month | awk '{print $9}')
The eval command resolves the indirect reference created by \$$cmd.
More details here: http://www.tldp.org/LDP/abs/html/ivr.html

Formatting ls output without tab using awk?

My question may seem fairly simple, I'm a beginner at bash scripting still, but I'm trying to format my ls output without using a tab when I print with awk.
Here is my current command that I'm running:
ls -al | sed 1d | awk '{print $1" ",$6" ", $7"\t", $9}'
and it prints out the following
drwx------ Feb 13 .
drwxr-xr-x Feb 5 ..
-rw-r--r-- Jan 21 .alias
-rw-r--r-- Feb 13 .bash_history
-rw-r--r-- Jan 29 .bash_profile
-rw-r--r-- Jan 21 .bash_profile~
-rw-r--r-- Feb 13 .bashrc
-rw-r--r-- Jan 21 .bashrc~
drwxr-xr-x Jan 3 csc135
drwxr-xr-x Aug 13 csc136
drwxr-xr-x Feb 9 csc235
drwxr-xr-x Oct 19 csc237
drwxr-xr-x Feb 18 csc310
drwxr-xr-x Feb 6 csc325
I have also attempted using a space:
ls -al | sed 1d | awk '{print $1" ",$6" ", $7" ", $9}'
which prints the following (quite bothersome):
drwx------ Feb 13 .
drwxr-xr-x Feb 5 ..
-rw-r--r-- Jan 21 .alias
-rw-r--r-- Feb 13 .bash_history
-rw-r--r-- Jan 29 .bash_profile
-rw-r--r-- Jan 21 .bash_profile~
-rw-r--r-- Feb 13 .bashrc
-rw-r--r-- Jan 21 .bashrc~
drwxr-xr-x Jan 3 csc135
drwxr-xr-x Aug 13 csc136
drwxr-xr-x Feb 9 csc235
drwxr-xr-x Oct 19 csc237
drwxr-xr-x Feb 18 csc310
drwxr-xr-x Feb 6 csc325
Is there any way to make it nicer looking like this?
drwx------ Feb 13 .
drwxr-xr-x Feb 5 ..
-rw-r--r-- Jan 21 .alias
-rw-r--r-- Feb 13 .bash_history
-rw-r--r-- Jan 29 .bash_profile
-rw-r--r-- Jan 21 .bash_profile~
-rw-r--r-- Feb 13 .bashrc
-rw-r--r-- Jan 21 .bashrc~
drwxr-xr-x Jan 3 csc135
drwxr-xr-x Aug 13 csc136
drwxr-xr-x Feb 9 csc235
drwxr-xr-x Oct 19 csc237
drwxr-xr-x Feb 18 csc310
drwxr-xr-x Feb 6 csc325
One automatic option that comes to mind is column:
$ ls -al | sed 1d | awk '{print $1,$6,$7,$9}' | column -t
drwxr-xr-x+ Feb 3 .
drwxrwxrwt+ Oct 9 ..
-rw------- Feb 12 .bash_history
-rwxr-xr-x Oct 9 .bash_profile
-rwxr-xr-x Feb 3 .bashrc
drwx------+ Feb 2 .cache
-rwxr-xr-x Oct 9 .inputrc
-rwxr-xr-x Feb 14 .mkshrc
-rwxr-xr-x Oct 9 .profile
drwxrwx---+ Dec 13 .ssh
Note the -t flag used for column:
-t, --table
Determine the number of columns the input contains and create
a table. Columns are delimited with whitespace, by default,
or with the characters supplied using the --output-separator
option. Table output is useful for pretty-printing.
Another way would be to used fixed lengths:
$ ls -al | sed 1d | awk '{printf "%-12s %-3s %-2s %s\n", $1,$6,$7,$9}'
drwxr-xr-x+ Feb 3 .
drwxrwxrwt+ Oct 9 ..
-rw------- Feb 12 .bash_history
-rwxr-xr-x Oct 9 .bash_profile
-rwxr-xr-x Feb 3 .bashrc
drwx------+ Feb 2 .cache
-rwxr-xr-x Oct 9 .inputrc
-rwxr-xr-x Feb 14 .mkshrc
-rwxr-xr-x Oct 9 .profile
drwxrwx---+ Dec 13 .ssh
There is another example of this in the GNU Awk User's guide.
ls -al|awk 'NR>1{print $1,$6,$7,$9}'|column -t
you don't need to use sed to delete the first line. Awk can do this if NR>1 print
You can avoid all unnecessary pipes by using features of awk.
ls -al | awk -v OFS="\t" 'NR>1 { print $1, $6, $7, $9 }'
Use NR>1 to get rid of the unnecessary sed to delete the first row.
Use OFS variable to set the output field separator to tab there by removing the need for column.

Run shell script for every file in directory

I have a bunch of files in a directory all named YYYY_MM_DD
-rw-r--r-- 1 root root 480K Apr 21 13:17 2012_04_05
-rw-r--r-- 1 root root 483K Apr 21 13:17 2012_04_06
-rw-r--r-- 1 root root 484K Apr 21 13:17 2012_04_07
-rw-r--r-- 1 root root 480K Apr 21 13:17 2012_04_08
-rw-r--r-- 1 root root 344K Apr 21 13:17 2012_04_09
-rw-r--r-- 1 root root 66K Apr 21 13:17 2012_04_10
-rw-r--r-- 1 root root 461K Apr 21 13:17 2012_04_11
-rw-r--r-- 1 root root 475K Apr 21 15:09 2012_04_17
-rw-r--r-- 1 root root 480K Apr 21 15:10 2012_04_18
-rw-r--r-- 1 root root 474K Apr 21 15:10 2012_04_19
-rw-r--r-- 1 root root 474K Apr 21 15:10 2012_04_20
I have a shell script that accepts a file as a paramater and calculates figures based on the data in the file, i call the script like this
sh Calculate.sh MyFile
I want to run this shell script for every file in this directory.
How would i go about doing this, xargs ??
Have you tried the find command with execution ?
My sample will echo the files, but you can call a shell script with the filename as a parameter
find . -maxdepth 1 -type f -exec echo {} \;
A simple for loop in the shell:
for file in *; do sh Calculate.sh "$file"; done
find . -maxdepth 1 -type f | xargs -n 1 -I % Calculate.sh %
./Calculate.sh 2012_04_{05..20}

Resources