/dev/blog/ID10T

Linux: Select all files in a folder

• Linux • Comments
Advertisement

I wrote a very similar post nearly three years ago (in German) and still need this daily. As I’m currently writing a lot of Dockerfiles, I realised my post wasn’t completely accurate. Although I redacted it, it’s a good opportunity to port the original post to the english language.

Requirement:

Select all files in a directory, including hidden ones or files beginning with crude symbols. But exclude . and .. as those will most likely lead to an exit code > 0.

Lets assume we want to chown all files in the directory /var/www/html:

[email protected]:/var/www/html# ls -la
total 60
-rw-r--r--. 1 root root 2 Nov 30 09:25 --test
-rw-r--r--. 1 root root 2 Nov 30 09:25 -test
drwxr-xr-x. 5 www-data www-data 4096 Nov 30 09:25 .
drwxr-xr-x. 3 root root 4096 Nov 20 08:35 ..
-rw-r--r--. 1 root root 0 Nov 30 09:24 ..a
-rw-r--r--. 1 root root 0 Nov 30 09:24 ..aa
-rw-r--r--. 1 root root 0 Nov 30 09:24 ..aaa
-rw-r--r--. 1 root root 0 Nov 30 09:24 .a
-rw-r--r--. 1 root root 0 Nov 30 09:24 .aa
-rw-r--r--. 1 root root 0 Nov 30 09:24 .aaa
-rw-rw-r--. 1 root root 1509 Aug 23 13:57 .htaccess.dist
-rw-rw-r--. 1 root root 306 Aug 23 13:57 README
-rw-rw-r--. 1 root root 23 Aug 23 13:57 VERSION
drwxrwxr-x. 2 root root 4096 Nov 30 09:23 conf
drwxrwxr-x. 12 root root 4096 Aug 23 13:57 data
-rw-rw-r--. 1 root root 19372 Aug 23 13:57 feed.php
drwxrwxr-x. 3 root root 4096 Nov 30 09:22 lib

Notice how we got a lot of strange filenames here, including files beginning with dashes or double dots.

Advertisement

Solution:

A combination of three Shell Wildcards solves our problem:

[email protected]:~# chown -R www-data:www-data /var/www/html/* /var/www/html/.[!.]* /var/www/html/.??*
[email protected]:~# echo $?
0
[email protected]:~# ls -la /var/www/html/
total 60
-rw-r--r--. 1 www-data www-data 2 Nov 30 09:25 --test
-rw-r--r--. 1 www-data www-data 2 Nov 30 09:25 -test
drwxr-xr-x. 5 www-data www-data 4096 Nov 30 09:25 .
drwxr-xr-x. 3 root root 4096 Nov 20 08:35 ..
-rw-r--r--. 1 www-data www-data 0 Nov 30 09:24 ..a
-rw-r--r--. 1 www-data www-data 0 Nov 30 09:24 ..aa
-rw-r--r--. 1 www-data www-data 0 Nov 30 09:24 ..aaa
-rw-r--r--. 1 www-data www-data 0 Nov 30 09:24 .a
-rw-r--r--. 1 www-data www-data 0 Nov 30 09:24 .aa
-rw-r--r--. 1 www-data www-data 0 Nov 30 09:24 .aaa
-rw-rw-r--. 1 www-data www-data 1509 Aug 23 13:57 .htaccess.dist
-rw-rw-r--. 1 www-data www-data 306 Aug 23 13:57 README
-rw-rw-r--. 1 www-data www-data 23 Aug 23 13:57 VERSION
drwxrwxr-x. 2 www-data www-data 4096 Nov 30 09:23 conf
drwxrwxr-x. 12 www-data www-data 4096 Aug 23 13:57 data
-rw-rw-r--. 1 www-data www-data 19372 Aug 23 13:57 feed.php
drwxrwxr-x. 3 www-data www-data 4096 Nov 30 09:22 lib

Lets inspect those three a little closer…

Not the most intuitive way, but it checks out. If you want to have different solutions, check Superuser.

Advertisement
More posts
comments powered by isso

Advertisement