|
From: | Gregory Heytings |
Subject: | bug#47058: 28.0.50; Dired Z: insert-directory: Reading directory: No such file or directory, CrossLine_linux_x86 |
Date: | Tue, 21 Sep 2021 19:19:52 +0000 |
Would it not be easier to unconditionally untar the contents in a temporary directory, and to either move its contents to the current directory if it contains only one entry, or to rename it to a directory based on the tar file name when it contains more than one entry?Easier in what sense?
In the sense of "DWIM".
Something like: TMP=$(mktemp -d ./XXXXXXXX) tar -C $TMP -x -z -f $FILE if (($(ls $TMP | wc -l) == 1)) then mv $TMP/* . rmdir $TMP else mv $TMP $(basename $FILE .tar.gz) fiWouldn't that remove the files that are in the directory but not in the archive?
No, it does what I explained above:If all files in the tar file are under one directory (e.g. emacs-27.2.tar.gz whose files are all in a emacs-27.2 directory), the files will be in that directory.
If on the contrary the tar file is "broken" and its files are under multiple directories or not in a directory (say foobar.tar.gz with three files "/foo", "/bar" and "/baz"), the files will be put in a directory "foobar".
[Prev in Thread] | Current Thread | [Next in Thread] |