1 |
Am Sun, Oct 23, 2022 at 06:16:04AM -0500 schrieb Dale: |
2 |
> Frank Steinmetzger wrote: |
3 |
> > Am Sun, Oct 23, 2022 at 01:35:55AM -0500 schrieb Dale: |
4 |
> > |
5 |
> >> Well, I ran into a slight problem. This isn't much of a problem with |
6 |
> >> Linux but I'm not sure how this would work on windoze tho. The problem, |
7 |
> >> if it is one, is the file extension. Let's say I have a mp4 file that |
8 |
> >> is the older original file that I intend to replace. If the file I |
9 |
> >> intend to put in its place is a .mkv file, mv uses the .mp4 extension |
10 |
> >> because all it cares about is the name of the file, not what it is or |
11 |
> >> its content. So, I end up with a .mkv file that has a .mp4 extension. |
12 |
> >> It works here on Linux but not sure about windoze and such. |
13 |
> > It’s not a problem for as long as the application you open the file with |
14 |
> > does its own detection. I.e. you feed mp4 to mpv, but it recognises by |
15 |
> > itself that it’s mp4 and can handle it. |
16 |
> |
17 |
> That is true on Linux. Most linux software could care less what the |
18 |
> extension is or if it even has one. |
19 |
|
20 |
Mpv or Vlc on Windows will probably just work™, too. |
21 |
|
22 |
> Heck, you could likely change a |
23 |
> .mp4 to .txt and it would open with a video player just by clicking on |
24 |
> it. Thing is, if I share a file with someone who uses windoze, I'm not |
25 |
> sure if it would work the same way. A wrong extension could cause |
26 |
> problems, either not opening at all or crashing something. It's |
27 |
> windoze, one can't expect much. ROFL |
28 |
|
29 |
Now you’re talking about double-clicking in a file manager and open the |
30 |
registered application. That’s the same—to some extent—on Linux file |
31 |
managers. I was referring to an application that could work out the details. |
32 |
|
33 |
> I thought about looking to see if there is a way to "scan" a directory |
34 |
> and look at each file and if needed, change the extension to the correct |
35 |
> one. Thing is, I couldn't write a fancy script if my life depended on |
36 |
> it. I also looked into using Krename to do it but it refuses to change |
37 |
> a extension. Doing it one file at a time manually puts me back to where |
38 |
> it is easier to change the file the old way. Time consuming but works. |
39 |
|
40 |
Well, ther is the `file` tool, plus maybe `mediainfo` or `identify` for |
41 |
images. But their output may not always be sufficient. |
42 |
|
43 |
> > If you still want to stick to a terminal solution akin to mv, then there |
44 |
> > is no way around a little script which wraps mv by extracting the |
45 |
> > extension and filename base. |
46 |
|
47 |
> Hmmmm. I get a little of that but then I get lost. |
48 |
|
49 |
The script first checks wheter it receives exactly two arguments, and exits |
50 |
otherwise. In theory it should also check whether both paths exist and are |
51 |
files. First rule of programming: always sanitise your inputs! |
52 |
|
53 |
Now it gets the extension of the source file and the base part (i.e. |
54 |
everything without the extension) from the destination. Then it deletes the |
55 |
original destination file and finally moves the source by concatenating the |
56 |
original destination’s base part with the source’s extension part. |
57 |
|
58 |
|
59 |
> Just how does that work and how would I use it? |
60 |
|
61 |
I have a lot of little helper scripts. I collect them in ~/usr/bin, to which |
62 |
my PATH is expanded in ~/.bashrc with export PATH=~/usr/bin:$PATH. Actually, |
63 |
I keep the script files in git repositories under ~/dev, and then put |
64 |
symlinks into ~/usr/bin, which point to the repository file. |
65 |
|
66 |
> I think I would save that as a file, make it executable and then run it |
67 |
> with whatever name I give it. |
68 |
|
69 |
Exactly. |
70 |
|
71 |
> I'm not sure exactly how to tell it what files to move tho. Same as mv |
72 |
> maybe? |
73 |
|
74 |
Yes. You give it two arguments. That’s what $1 and $2 are for in the script. |
75 |
I always write my scripts so that they can handle spaces in filenames. I |
76 |
find it an anachronism to still use underscores or dots in filenames where |
77 |
spaces would go in normal language. File systems have been able to deal with |
78 |
spaces for decades now. |
79 |
|
80 |
> Currently, I move to the main directory that files are in when I am in |
81 |
> Konsole and running as my user, so file permissions don't switch to root. |
82 |
|
83 |
That’s the proper way to do it. I also have a root console open all the |
84 |
time, but don’t do normal file operations in there. The risk is too big that |
85 |
I may be typing too fast for my own good. |
86 |
|
87 |
> My process on file organizing goes a little like this. I have a set of |
88 |
> videos that go together. When I have a new version of one or more videos, |
89 |
> I place them in a sub-directory until they are named properly or something |
90 |
> so I can move to the main directory. Like this: |
91 |
> |
92 |
> Main Directory #Permanent location for files ----- Sub-directory |
93 |
> #Temporary location for files needing names changed etc. Once done, they |
94 |
> move up to main directory. |
95 |
|
96 |
I don’t quite understand the formatting of that line. But basically, you |
97 |
have a directory for your videos, and in a subdiractory of that, you collect |
98 |
your temporary files? |
99 |
|
100 |
> A typical command for mv would be like this. |
101 |
> |
102 |
> mv sub-directory/<file name of new file> <file name of old file in main |
103 |
> directory> |
104 |
|
105 |
OK. That could actually be automated in a way. How many files per directory |
106 |
are we talking about? Because one approach I can think of is a managament |
107 |
script. It goes through all the files in your temp subdir, and for each file |
108 |
it asks you which file to overwrite in the main directory. It then moves the |
109 |
file, but keeps the extension as in my first script. But this isn’t |
110 |
practical if there are dozens of files in the main dir, because you would |
111 |
have to scroll through the big selection ist. |
112 |
|
113 |
As an example, let’s assume we have the following file tree: |
114 |
|
115 |
main |
116 |
├── episode 1.mkv |
117 |
├── episode 2.mpeg |
118 |
├── episode 3.avi |
119 |
└── temp |
120 |
└── episode 2 with better quality.mkv |
121 |
|
122 |
You cd into main, and start the script. It checks for the presence of the |
123 |
temp dir and, if it exists, asks for each of its files what to do: |
124 |
|
125 |
main$ VideoCleanupScript |
126 |
Select file to overwrite with 'episode 2 with better quality.mkv': |
127 |
1) episode 1.mkv |
128 |
2) episode 2.mpeg |
129 |
3) episode 3.avi |
130 |
#? 2 |
131 |
Removing 'episode 2.mpeg' |
132 |
Moving file 'episode 2 with better quality.mkv' -> 'episode 2.mkv' |
133 |
|
134 |
> Just trying to follow this and figure out how to use it. ;-) I've said |
135 |
> this before, my scripting skills are so small it isn't funny. :/ |
136 |
|
137 |
I could write the above script in probably half an hour. Just say when. ;-) |
138 |
|
139 |
I, too, have a few scripts that move files around. For example when I edit |
140 |
photo albums, I do a final re-encoding of those images in different JPEG |
141 |
quality levels as a trade-off between quality and storage space. For that I |
142 |
have a script that asks me which level to keep whilst I look at the |
143 |
different versions in a viewer. I then decide for one and the script picks |
144 |
the appropriate file and moves it into the final folder. The other choices |
145 |
are moved away so that if I halt the script midway, I can call it again and |
146 |
pick up where I left it. |
147 |
|
148 |
-- |
149 |
Grüße | Greetings | Salut | Qapla’ |
150 |
Please do not share anything from, with or about me on any social network. |
151 |
|
152 |
Of all the people I’ve met you’re certainly one of them. |