diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index ffb9c05..21fcf4d 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -575,7 +575,7 @@ static void
 open_window (NautilusApplication *application,
 	     const char *startup_id,
 	     const char *uri, GdkScreen *screen, const char *geometry,
-	     gboolean browser_window)
+	     gboolean browser_window, const char *select)
 {
 	GFile *location;
 	NautilusWindow *window;
@@ -603,7 +603,18 @@ open_window (NautilusApplication *application,
 								  NULL);
 	}
 
-	nautilus_window_go_to (window, location);
+
+        GList *selection = NULL;
+
+
+	if (select != NULL) {
+	        GFile *to_be_selected = g_file_new_for_uri(select);
+        	selection = g_list_prepend(selection,to_be_selected);
+		nautilus_window_go_to_with_selection (window, location, selection);
+		g_object_unref(selection);
+	} else {
+		nautilus_window_go_to (window, location);
+	}
 
 	g_object_unref (location);
 
@@ -626,17 +637,18 @@ open_windows (NautilusApplication *application,
 	      char **uris,
 	      GdkScreen *screen,
 	      const char *geometry,
-	      gboolean browser_window)
+	      gboolean browser_window,
+	      const char *select)
 {
 	guint i;
 
 	if (uris == NULL || uris[0] == NULL) {
 		/* Open a window pointing at the default location. */
-		open_window (application, startup_id, NULL, screen, geometry, browser_window);
+		open_window (application, startup_id, NULL, screen, geometry, browser_window, select);
 	} else {
 		/* Open windows at each requested location. */
 		for (i = 0; uris[i] != NULL; i++) {
-			open_window (application, startup_id, uris[i], screen, geometry, browser_window);
+			open_window (application, startup_id, uris[i], screen, geometry, browser_window, select);
 		}
 	}
 }
@@ -1464,6 +1476,7 @@ nautilus_application_command_line (GApplication *app,
 	gboolean autostart_mode = FALSE;
 	const gchar *autostart_id;
 	gchar *geometry = NULL;
+	gchar *select = NULL;
 	gchar **remaining = NULL;
 	const GOptionEntry options[] = {
 #ifndef NAUTILUS_OMIT_SELF_CHECK
@@ -1474,6 +1487,8 @@ nautilus_application_command_line (GApplication *app,
 		  N_("Show the version of the program."), NULL },
 		{ "geometry", 'g', 0, G_OPTION_ARG_STRING, &geometry,
 		  N_("Create the initial window with the given geometry."), N_("GEOMETRY") },
+		{ "select", 's', 0, G_OPTION_ARG_STRING, &select,
+		  N_("Select a file using the given URI."), NULL },
 		{ "no-default-window", 'n', 0, G_OPTION_ARG_NONE, &no_default_window,
 		  N_("Only create windows for explicitly specified URIs."), NULL },
 		{ "no-desktop", '\0', 0, G_OPTION_ARG_NONE, &no_desktop,
@@ -1667,7 +1682,8 @@ nautilus_application_command_line (GApplication *app,
 				      uris,
 				      gdk_screen_get_default (),
 				      geometry,
-				      browser_window);
+				      browser_window,
+				      select);
 		}
 	}
 
