Skip to content
Advertisement

Pipe find command output to ls command

Need to pipe find command output to ls command limiting ls command to a certain date. Sort of a filter by date modified but I want with the format of the ls -lth --full-time. The find command gives me last modified files within 365 days.
But ls shows me everything.

find . -mtime -365 | ls -lth --full-time

find gives me:

$ find . -mtime -365
.
./en_mapp
./main.py
./file1.txt
./file2.csv

And ls -lth –full-time gives me:

$ ls -lth --full-time
total 8.0K
-rw-r--r--. 1 root root  174 2020-09-21 10:59:26.858601430 +0200 main.py
-rw-r--r--. 1 root root    0 2020-09-21 09:36:17.072137720 +0200 file2.csv
drwxr-xr-x. 2 root root 4.0K 2020-09-21 09:35:48.296169162 +0200 en_mapp
-rw-r--r--. 1 root root    0 2020-09-21 09:35:28.502502950 +0200 file1.txt
-rw-r--r--. 1 root root    0 2012-01-01 00:00:00.000000000 +0100 goldenfile.xls

Advertisement

Answer

xargs takes input from stdin and passes it as arguments to some command.

find . -mtime -365 | xargs ls -lth --full-time
# or better with no dirs and handle spaces and quotes in filename
find . -type f -mtime -365 | xargs -d 'n' ls -lth --full-time
# or better - handle newlines in filenames
find . -mtime -365 -print0 | xargs -0 ls -lth --full-time
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement