Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why extglob except breaking except condition?

I run in Debian 8.1, GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu) and Lenovo G50-30 with 500 GB SSD and 8 GB flash memory:

shopt -s extglob
cp -r !(Backups.backupdb/) /home/masi/Documents/

but it will copy also everything from the directory Backups.backupdb/, confirmed at the end of copying.

Messages during the copying process

After 2h copying

cp: cannot stat ‘Backups.backupdb/masi\’s MacBook Air/2015-06-25-233115/Macintosh HD/System/Library/Image Capture/Automatic Tasks/MakePDF.app/Contents/Resources/ko.lproj/3x5로 자르기.mkpdf’: No such file or directory
cp: cannot stat ‘Backups.backupdb/masi\’s MacBook Air/2015-06-25-233115/Macintosh HD/System/Library/Image Capture/Automatic Tasks/MakePDF.app/Contents/Resources/ko.lproj/3x5에 맞추기.mkpdf’: No such file or directory
...
cp: cannot stat ‘Camera Uploads/2015-06-29 11.51.36.jpg’: Invalid argument
cp: cannot stat ‘Camera Uploads/2015-06-29 11.51.53.jpg’: Invalid argument
cp: cannot stat ‘Camera Uploads/Icon\r’: Invalid argument
cp: cannot stat ‘Cancer’: Invalid argument
cp: cannot stat ‘cardio bad/atria-en-ventrikels.swf’: Invalid argument
cp: cannot stat ‘cardio bad/extreme_90_180.swf’: Invalid argument
cp: cannot stat ‘Cardio databases tools’: Invalid argument
cp: cannot stat ‘Cardiology’: Invalid argument
...

where I keep unexpected browsing through the backup folder. The challenge here is that the Backups.backupdb is several TBs and seeing that it goes browsing it does not feel good.

No symbolic links

I run

ls -lR /media/masi/eb807ed8-7f45-35f8-a345-9da6692b228a/ |grep Backup

getting

ls: cannot access /media/masi/eb807ed8-7f45-35f8-a345-9da6692b228a/Cancer: Invalid argument
ls: cannot access /media/masi/eb807ed8-7f45-35f8-a345-9da6692b228a/Cardio databases tools: Invalid argument
ls: cannot access /media/masi/eb807ed8-7f45-35f8-a345-9da6692b228a/Cardiology: Invalid argument
drwxr-xr-x 1 root root          7 Jul  8 20:25 Backups.backupdb
ls: cannot open directory /media/masi/eb807ed8-7f45-35f8-a345-9da6692b228a/animations/Embryology/e17_files: Permission denied
^C

so the directory is not a symlink. Why is extglob except condition broken here by browsing the folder?

like image 402
Léo Léopold Hertz 준영 Avatar asked Oct 14 '25 21:10

Léo Léopold Hertz 준영


1 Answers

Try removing the backslash (I am adding echo for test purposes):

shopt -s extglob
echo cp -r !(Backups.backupdb) /home/masi/Documents/

It works in my environment (GNU bash, version 4.3.30, OS X)

like image 119
Mario Zannone Avatar answered Oct 17 '25 12:10

Mario Zannone