Try
or in case one of the two possibilities given doesn't exist, use
to suppress the error message.
.??*/ lists all
hidden folders that have at least 2 characters (to
exclude the listing of the special .. folder) - so when you happen to have a hidden folder that only has one character it would not be listed, but for now I have not seen any such folder in /home/guest/ .
*/ lists all other folders.
Some background; unlike with regex a "." is here seen literally.
By that,
.??* means:
"a literal ."+"any character"+"any character"+"0 or more characters"
Real live Example:
Code: Select all
guest@rava:~$ cd /tmp
guest@rava:/tmp$ mkdir TESTDIR
guest@rava:/tmp$ cd TESTDIR
guest@rava:/tmp/TESTDIR$ ls -la
total 0
drwxr-xr-x 2 guest users 40 2023-12-04 06:48 .
drwxrwxrwt 14 root root 420 2023-12-04 06:48 ..
guest@rava:/tmp/TESTDIR$ mkdir .test
guest@rava:/tmp/TESTDIR$ mkdir .t
guest@rava:/tmp/TESTDIR$ mkdir .tt
guest@rava:/tmp/TESTDIR$ mkdir test
guest@rava:/tmp/TESTDIR$ ls -la
total 0
drwxr-xr-x 6 guest users 120 2023-12-04 06:49 .
drwxrwxrwt 14 root root 420 2023-12-04 06:48 ..
drwxr-xr-x 2 guest users 40 2023-12-04 06:48 .t
drwxr-xr-x 2 guest users 40 2023-12-04 06:48 .test
drwxr-xr-x 2 guest users 40 2023-12-04 06:48 .tt
drwxr-xr-x 2 guest users 40 2023-12-04 06:49 test
guest@rava:/tmp/TESTDIR$ du -h .??*/ */
0 .test/
0 .tt/
0 test/
guest@rava:/tmp/TESTDIR$
as you can see, all folders but . .. and .t are listed.